Merge branch 'main' into aeisenberg/assert-version

This commit is contained in:
Andrew Eisenberg
2022-11-07 15:21:57 -08:00
203 changed files with 41895 additions and 16006 deletions

View File

@@ -82,7 +82,7 @@ jobs:
- uses: actions/setup-node@v1
with:
node-version: '16.14.0'
node-version: '16.14.2'
- name: Install dependencies
working-directory: extensions/ql-vscode
@@ -156,7 +156,7 @@ jobs:
- uses: actions/setup-node@v1
with:
node-version: '16.14.0'
node-version: '16.14.2'
- name: Install dependencies
working-directory: extensions/ql-vscode

View File

@@ -1,3 +1,4 @@
**/* @github/codeql-vscode-reviewers
**/remote-queries/ @github/code-scanning-secexp-reviewers
**/variant-analysis/ @github/code-scanning-secexp-reviewers
**/databases/ @github/code-scanning-secexp-reviewers

View File

@@ -102,11 +102,17 @@ We have several types of tests:
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 `src/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
First move into the `extensions/ql-vscode` directory. Then, depending on which tests you want to run, use the appropriate command to run the tests:
Then, from the `extensions/ql-vscode` directory, use the appropriate command to run the tests:
* Unit tests: `npm run test:unit`
* View Tests: `npm test:view`

View File

@@ -0,0 +1,6 @@
.vscode-test/
node_modules/
out/
# Include the Storybook config
!.storybook

View File

@@ -3,7 +3,7 @@ module.exports = {
parserOptions: {
ecmaVersion: 2018,
sourceType: "module",
project: ["tsconfig.json", "./src/**/tsconfig.json", "./gulpfile.ts/tsconfig.json"],
project: ["tsconfig.json", "./src/**/tsconfig.json", "./gulpfile.ts/tsconfig.json", "./scripts/tsconfig.json", "./.storybook/tsconfig.json"],
},
plugins: ["@typescript-eslint"],
env: {

View File

@@ -1,6 +1,4 @@
{
"exit": true,
"require": [
"test/mocha.setup.js"
]
"require": ["test/mocha.setup.js"]
}

View File

@@ -7,7 +7,7 @@ import '@vscode/codicons/dist/codicon.css';
// https://storybook.js.org/docs/react/configure/overview#configure-story-rendering
export const parameters = {
// All props starting with `on` will automatically receive an action as a prop
actions: { argTypesRegex: "^on[A-Z].*" },
actions: { argTypesRegex: '^on[A-Z].*' },
// All props matching these names will automatically get the correct control
controls: {
matchers: {

View File

@@ -1,7 +1,7 @@
export function config(entry = []) {
return [...entry, require.resolve("./preview.ts")];
return [...entry, require.resolve('./preview.ts')];
}
export function managerEntries(entry = []) {
return [...entry, require.resolve("./manager.tsx")];
return [...entry, require.resolve('./manager.tsx')];
}

View File

@@ -6,4 +6,4 @@ export enum VSCodeTheme {
export const themeNames: { [key in VSCodeTheme]: string } = {
[VSCodeTheme.Dark]: 'Dark+',
[VSCodeTheme.Light]: 'Light+',
}
};

View File

@@ -4,9 +4,11 @@ import type { AnyFramework, PartialStoryFn as StoryFunction, StoryContext } from
import { VSCodeTheme } from './theme';
const themeFiles: { [key in VSCodeTheme]: string } = {
// eslint-disable-next-line @typescript-eslint/no-var-requires
[VSCodeTheme.Dark]: require('!file-loader?modules!../../src/stories/vscode-theme-dark.css').default,
// eslint-disable-next-line @typescript-eslint/no-var-requires
[VSCodeTheme.Light]: require('!file-loader?modules!../../src/stories/vscode-theme-light.css').default,
}
};
export const withTheme = (
StoryFn: StoryFunction<AnyFramework>,
@@ -18,7 +20,7 @@ export const withTheme = (
const styleSelectorId =
context.viewMode === 'docs'
? `addon-vscode-theme-docs-${context.id}`
: `addon-vscode-theme-theme`;
: 'addon-vscode-theme-theme';
const theme = Object.values(VSCodeTheme).includes(vscodeTheme) ? vscodeTheme as VSCodeTheme : VSCodeTheme.Dark;

View File

@@ -2,6 +2,12 @@
## [UNRELEASED]
## 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)

View File

@@ -15,7 +15,8 @@ const packageFiles = [
'snippets.json',
'media',
'node_modules',
'out'
'out',
'workspace-databases-schema.json'
];
async function copyPackage(sourcePath: string, destPath: string): Promise<void> {

View File

@@ -1,7 +1,7 @@
import * as gulp from 'gulp';
import { compileTypeScript, watchTypeScript, cleanOutput } from './typescript';
import { compileTextMateGrammar } from './textmate';
import { copyTestData } from './tests';
import { copyTestData, watchTestData } from './tests';
import { compileView, watchView } from './webpack';
import { packageExtension } from './package';
import { injectAppInsightsKey } from './appInsights';
@@ -21,6 +21,7 @@ export {
watchView,
compileTypeScript,
copyTestData,
watchTestData,
injectAppInsightsKey,
compileView,
};

View File

@@ -1,9 +1,14 @@
import * as gulp from 'gulp';
export function copyTestData() {
copyNoWorkspaceData();
copyCliIntegrationData();
return Promise.resolve();
return Promise.all([
copyNoWorkspaceData(),
copyCliIntegrationData()
]);
}
export function watchTestData() {
return gulp.watch(['src/vscode-tests/*/data/**/*'], copyTestData);
}
function copyNoWorkspaceData() {

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
"description": "CodeQL for Visual Studio Code",
"author": "GitHub",
"private": true,
"version": "1.7.3",
"version": "1.7.5",
"publisher": "GitHub",
"license": "MIT",
"icon": "media/VS-marketplace-CodeQL-icon.png",
@@ -37,6 +37,7 @@
"onLanguage:ql",
"onLanguage:ql-summary",
"onView:codeQLDatabases",
"onView:codeQLDatabasesExperimental",
"onView:codeQLQueryHistory",
"onView:codeQLAstViewer",
"onView:codeQLEvalLogViewer",
@@ -83,6 +84,12 @@
"editor.wordBasedSuggestions": false
}
},
"jsonValidation": [
{
"fileMatch": "workspace-databases.json",
"url": "./workspace-databases-schema.json"
}
],
"languages": [
{
"id": "ql",
@@ -353,6 +360,14 @@
"command": "codeQL.copyVersion",
"title": "CodeQL: Copy Version Information"
},
{
"command": "codeQLDatabasesExperimental.openConfigFile",
"title": "Open Database Configuration File",
"icon": {
"light": "media/light/edit.svg",
"dark": "media/dark/edit.svg"
}
},
{
"command": "codeQLDatabases.chooseDatabaseFolder",
"title": "Choose Database from Folder",
@@ -751,6 +766,11 @@
"command": "codeQLEvalLogViewer.clear",
"when": "view == codeQLEvalLogViewer",
"group": "navigation"
},
{
"command": "codeQLDatabasesExperimental.openConfigFile",
"when": "view == codeQLDatabasesExperimental",
"group": "navigation"
}
],
"view/item/context": [
@@ -969,6 +989,10 @@
"command": "codeQL.chooseDatabaseLgtm",
"when": "config.codeQL.canary"
},
{
"command": "codeQLDatabasesExperimental.openConfigFile",
"when": "false"
},
{
"command": "codeQLDatabases.setCurrentDatabase",
"when": "false"
@@ -1208,6 +1232,11 @@
"id": "codeQLDatabases",
"name": "Databases"
},
{
"id": "codeQLDatabasesExperimental",
"name": "Databases",
"when": "config.codeQL.canary && config.codeQL.newQueryRunExperience"
},
{
"id": "codeQLQueryHistory",
"name": "Query History"
@@ -1247,15 +1276,17 @@
"watch": "npm-run-all -p watch:*",
"watch:extension": "tsc --watch",
"watch:webpack": "gulp watchView",
"watch:files": "gulp watchTestData",
"test": "npm-run-all -p test:*",
"test:unit": "mocha --config .mocharc.json test/pure-tests/**/*.ts",
"test:view": "jest",
"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",
"integration:no-workspace": "node ./out/vscode-tests/run-integration-tests.js no-workspace",
"integration:minimal-workspace": "node ./out/vscode-tests/run-integration-tests.js minimal-workspace",
"cli-integration": "node ./out/vscode-tests/run-integration-tests.js cli-integration",
"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": "tsfmt -r && eslint . --ext .ts,.tsx --fix",
"lint": "eslint . --ext .ts,.tsx --max-warnings=0",
"format-staged": "lint-staged",
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook",
@@ -1269,6 +1300,7 @@
"@vscode/codicons": "^0.0.31",
"@vscode/webview-ui-toolkit": "^1.0.1",
"child-process-promise": "^2.2.1",
"chokidar": "^3.5.3",
"classnames": "~2.2.6",
"d3": "^7.6.1",
"d3-graphviz": "^2.6.1",
@@ -1277,6 +1309,7 @@
"immutable": "^4.0.0",
"js-yaml": "^4.1.0",
"minimist": "~1.2.6",
"msw": "^0.47.4",
"nanoid": "^3.2.0",
"node-fetch": "~2.6.7",
"p-queue": "^6.0.0",
@@ -1305,6 +1338,7 @@
"@babel/core": "^7.18.13",
"@babel/plugin-transform-modules-commonjs": "^7.18.6",
"@faker-js/faker": "^7.5.0",
"@octokit/plugin-throttling": "^4.3.2",
"@storybook/addon-actions": "^6.5.10",
"@storybook/addon-essentials": "^6.5.10",
"@storybook/addon-interactions": "^6.5.10",
@@ -1381,7 +1415,6 @@
"mini-css-extract-plugin": "^2.6.1",
"mocha": "^10.0.0",
"mocha-sinon": "~2.1.2",
"msw": "^0.47.4",
"npm-run-all": "^4.1.5",
"prettier": "~2.0.5",
"proxyquire": "~2.1.3",

View File

@@ -0,0 +1,128 @@
/**
* 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 * as fs from 'fs-extra';
import * as path from 'path';
import { Octokit, type RestEndpointMethodTypes } from '@octokit/rest';
import { throttling } from '@octokit/plugin-throttling';
import { getFiles } from './util/files';
import type { GitHubApiRequest } from '../src/mocks/gh-api-request';
import { isGetVariantAnalysisRequest } from '../src/mocks/gh-api-request';
import { VariantAnalysis } from '../src/remote-queries/gh-api/variant-analysis';
import { RepositoryWithMetadata } from '../src/remote-queries/gh-api/repository';
const extensionDirectory = path.resolve(__dirname, '..');
const scenariosDirectory = path.resolve(extensionDirectory, 'src/mocks/scenarios');
// Make sure we don't run into rate limits by automatically waiting until we can
// make another request.
const MyOctokit = Octokit.plugin(throttling);
const auth = process.env.GITHUB_TOKEN;
const octokit = new MyOctokit({
auth,
throttle: {
onRateLimit: (retryAfter: number, options: any, 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: any, 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 fs.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 fs.readJson(file);
if (!isGetVariantAnalysisRequest(data)) {
continue;
}
if (!data.response.body || !('controller_repo' in data.response.body)) {
continue;
}
console.log(`Adding fields to '${path.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 fs.writeJson(file, data, { spaces: 2 });
}
}
addFieldsToScenarios().catch(e => {
console.error(e);
process.exit(2);
});

View File

@@ -14,7 +14,7 @@ import * as fs from 'fs-extra';
import * as path from 'path';
if (process.argv.length !== 3) {
console.error('Expected 1 argument - the scenario name')
console.error('Expected 1 argument - the scenario name');
}
const scenarioName = process.argv[2];
@@ -39,7 +39,7 @@ async function fixScenarioFiles() {
});
let index = 0;
for (let file of orderedFiles) {
for (const file of orderedFiles) {
const ext = path.extname(file);
if (ext === '.json') {
const fileName = path.basename(file, ext);
@@ -66,7 +66,7 @@ async function fixScenarioFiles() {
await fs.writeJSON(newFilePath, json);
}
}
index++;
}
}

View File

@@ -4,6 +4,8 @@ import * as path from 'path';
import Ajv from 'ajv';
import * as tsj from 'ts-json-schema-generator';
import { getFiles } from './util/files';
const extensionDirectory = path.resolve(__dirname, '..');
const rootDirectory = path.resolve(extensionDirectory, '../..');
const scenariosDirectory = path.resolve(extensionDirectory, 'src/mocks/scenarios');
@@ -60,19 +62,6 @@ async function lintScenarios() {
}
}
// https://stackoverflow.com/a/45130990
async function* getFiles(dir: string): AsyncGenerator<string> {
const dirents = await fs.readdir(dir, { withFileTypes: true });
for (const dirent of dirents) {
const res = path.resolve(dir, dirent.name);
if (dirent.isDirectory()) {
yield* getFiles(res);
} else {
yield res;
}
}
}
lintScenarios().catch(e => {
console.error(e);
process.exit(2);

View File

@@ -0,0 +1,10 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"extends": "../tsconfig.json",
"include": ["**/*.ts"],
"exclude": [],
"compilerOptions": {
"rootDir": "..",
"noEmit": true
}
}

View File

@@ -0,0 +1,15 @@
import * as fs from 'fs-extra';
import * as path from 'path';
// https://stackoverflow.com/a/45130990
export async function* getFiles(dir: string): AsyncGenerator<string> {
const dirents = await fs.readdir(dir, { withFileTypes: true });
for (const dirent of dirents) {
const res = path.resolve(dir, dirent.name);
if (dirent.isDirectory()) {
yield* getFiles(res);
} else {
yield res;
}
}
}

View File

@@ -5,11 +5,11 @@ import {
ViewColumn,
Uri,
WebviewPanelOptions,
WebviewOptions
WebviewOptions,
} from 'vscode';
import * as path from 'path';
import { DisposableObject } from './pure/disposable-object';
import { DisposableObject, DisposeHandler } from './pure/disposable-object';
import { tmpDir } from './helpers';
import { getHtmlForWebview, WebviewMessage, WebviewView } from './interface-utils';
@@ -27,6 +27,8 @@ export abstract class AbstractWebview<ToMessage extends WebviewMessage, FromMess
protected panelLoaded = false;
protected panelLoadedCallBacks: (() => void)[] = [];
private panelResolves?: Array<(panel: WebviewPanel) => void>;
constructor(
protected readonly ctx: ExtensionContext
) {
@@ -35,20 +37,36 @@ export abstract class AbstractWebview<ToMessage extends WebviewMessage, FromMess
public async restoreView(panel: WebviewPanel): Promise<void> {
this.panel = panel;
this.setupPanel(panel);
const config = await this.getPanelConfig();
this.setupPanel(panel, config);
}
protected get isShowingPanel() {
return !!this.panel;
}
protected getPanel(): WebviewPanel {
protected async getPanel(): Promise<WebviewPanel> {
if (this.panel == undefined) {
const { ctx } = this;
const config = this.getPanelConfig();
// 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.panel = Window.createWebviewPanel(
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 },
@@ -64,14 +82,17 @@ export abstract class AbstractWebview<ToMessage extends WebviewMessage, FromMess
],
}
);
this.setupPanel(this.panel);
this.panel = panel;
this.setupPanel(panel, config);
this.panelResolves.forEach((resolve) => resolve(panel));
this.panelResolves = undefined;
}
return this.panel;
}
protected setupPanel(panel: WebviewPanel): void {
const config = this.getPanelConfig();
protected setupPanel(panel: WebviewPanel, config: WebviewPanelConfig): void {
this.push(
panel.onDidDispose(
() => {
@@ -101,7 +122,7 @@ export abstract class AbstractWebview<ToMessage extends WebviewMessage, FromMess
);
}
protected abstract getPanelConfig(): WebviewPanelConfig;
protected abstract getPanelConfig(): WebviewPanelConfig | Promise<WebviewPanelConfig>;
protected abstract onPanelDispose(): void;
@@ -123,7 +144,13 @@ export abstract class AbstractWebview<ToMessage extends WebviewMessage, FromMess
this.panelLoadedCallBacks = [];
}
protected postMessage(msg: ToMessage): Thenable<boolean> {
return this.getPanel().webview.postMessage(msg);
protected async postMessage(msg: ToMessage): Promise<boolean> {
const panel = await this.getPanel();
return panel.webview.postMessage(msg);
}
public dispose(disposeHandler?: DisposeHandler) {
this.panel?.dispose();
super.dispose(disposeHandler);
}
}

View File

@@ -46,7 +46,8 @@ export class CompareView extends AbstractWebview<ToCompareViewMessage, FromCompa
selectedResultSetName?: string
) {
this.comparePair = { from, to };
this.getPanel().reveal(undefined, true);
const panel = await this.getPanel();
panel.reveal(undefined, true);
await this.waitForPanelLoaded();
const [

View File

@@ -438,6 +438,16 @@ export function isVariantAnalysisLiveResultsEnabled(): boolean {
return !!LIVE_RESULTS.getValue<boolean>();
}
/**
* A flag indicating whether to use the new query run experience which involves
* using a new database panel.
*/
const NEW_QUERY_RUN_EXPERIENCE = new Setting('newQueryRunExperience', ROOT_SETTING);
export function isNewQueryRunExperienceEnabled(): boolean {
return !!NEW_QUERY_RUN_EXPERIENCE.getValue<boolean>();
}
// Settings for mocking the GitHub API.
const MOCK_GH_API_SERVER = new Setting('mockGitHubApiServer', ROOT_SETTING);

View File

@@ -0,0 +1,3 @@
### Databases
This folder contains code for the new experimental databases panel and new query run experience.

View File

@@ -0,0 +1,71 @@
import * as fs from 'fs-extra';
import * as path from 'path';
import { cloneDbConfig, DbConfig } from './db-config';
import * as chokidar from 'chokidar';
import { DisposableObject } from '../pure/disposable-object';
export class DbConfigStore extends DisposableObject {
private readonly configPath: string;
private config: DbConfig;
private configWatcher: chokidar.FSWatcher | undefined;
public constructor(workspaceStoragePath: string) {
super();
this.configPath = path.join(workspaceStoragePath, 'workspace-databases.json');
this.config = this.createEmptyConfig();
this.configWatcher = undefined;
}
public async initialize(): Promise<void> {
await this.loadConfig();
this.watchConfig();
}
public dispose(): void {
this.configWatcher?.unwatch(this.configPath);
}
public getConfig(): DbConfig {
// Clone the config so that it's not modified outside of this class.
return cloneDbConfig(this.config);
}
public getConfigPath(): string {
return this.configPath;
}
private async loadConfig(): Promise<void> {
if (!await fs.pathExists(this.configPath)) {
await fs.writeJSON(this.configPath, this.createEmptyConfig(), { spaces: 2 });
}
await this.readConfig();
}
private async readConfig(): Promise<void> {
this.config = await fs.readJSON(this.configPath);
}
private readConfigSync(): void {
this.config = fs.readJSONSync(this.configPath);
}
private watchConfig(): void {
this.configWatcher = chokidar.watch(this.configPath).on('change', () => {
this.readConfigSync();
});
}
private createEmptyConfig(): DbConfig {
return {
remote: {
repositoryLists: [],
owners: [],
repositories: [],
}
};
}
}

View File

@@ -0,0 +1,29 @@
// Contains models for the data we want to store in the database config
export interface DbConfig {
remote: RemoteDbConfig;
}
export interface RemoteDbConfig {
repositoryLists: RemoteRepositoryList[];
owners: string[];
repositories: string[];
}
export interface RemoteRepositoryList {
name: string;
repositories: string[];
}
export function cloneDbConfig(config: DbConfig): DbConfig {
return {
remote: {
repositoryLists: config.remote.repositoryLists.map((list) => ({
name: list.name,
repositories: [...list.repositories],
})),
owners: [...config.remote.owners],
repositories: [...config.remote.repositories],
}
};
}

View File

@@ -0,0 +1,53 @@
// This file contains models that are used to represent the databases.
export enum DbItemKind {
RootLocal = 'RootLocal',
RootRemote = 'RootRemote',
RemoteSystemDefinedList = 'RemoteSystemDefinedList',
RemoteUserDefinedList = 'RemoteUserDefinedList',
RemoteOwner = 'RemoteOwner',
RemoteRepo = 'RemoteRepo'
}
export interface RootLocalDbItem {
kind: DbItemKind.RootLocal;
}
export interface RootRemoteDbItem {
kind: DbItemKind.RootRemote;
children: RemoteDbItem[];
}
export type DbItem =
| RootLocalDbItem
| RootRemoteDbItem
| RemoteDbItem
export type RemoteDbItem =
| RemoteSystemDefinedListDbItem
| RemoteUserDefinedListDbItem
| RemoteOwnerDbItem
| RemoteRepoDbItem;
export interface RemoteSystemDefinedListDbItem {
kind: DbItemKind.RemoteSystemDefinedList;
listName: string;
listDisplayName: string;
listDescription: string;
}
export interface RemoteUserDefinedListDbItem {
kind: DbItemKind.RemoteUserDefinedList;
listName: string;
repos: RemoteRepoDbItem[];
}
export interface RemoteOwnerDbItem {
kind: DbItemKind.RemoteOwner;
ownerName: string;
}
export interface RemoteRepoDbItem {
kind: DbItemKind.RemoteRepo;
repoFullName: string;
}

View File

@@ -0,0 +1,23 @@
import { DbConfigStore } from './db-config-store';
import { DbItem } from './db-item';
import { createLocalTree, createRemoteTree } from './db-tree-creator';
export class DbManager {
constructor(
private readonly dbConfigStore: DbConfigStore
) {
}
public getDbItems(): DbItem[] {
const config = this.dbConfigStore.getConfig();
return [
createRemoteTree(config),
createLocalTree()
];
}
public getConfigPath(): string {
return this.dbConfigStore.getConfigPath();
}
}

View File

@@ -0,0 +1,44 @@
import * as vscode from 'vscode';
import { isCanary, isNewQueryRunExperienceEnabled } from '../config';
import { logger } from '../logging';
import { DisposableObject } from '../pure/disposable-object';
import { DbConfigStore } from './db-config-store';
import { DbManager } from './db-manager';
import { DbPanel } from './ui/db-panel';
export class DbModule extends DisposableObject {
public async initialize(
extensionContext: vscode.ExtensionContext
): Promise<void> {
if (extensionContext.extensionMode !== vscode.ExtensionMode.Development ||
!isCanary() ||
!isNewQueryRunExperienceEnabled()) {
// Currently, we only want to expose the new database panel when we
// are in development and canary mode and the developer has enabled the
// new query run experience.
return;
}
void logger.log('Initializing database module');
const storagePath = extensionContext.storageUri?.fsPath || extensionContext.globalStorageUri.fsPath;
const dbConfigStore = new DbConfigStore(storagePath);
await dbConfigStore.initialize();
const dbManager = new DbManager(dbConfigStore);
const dbPanel = new DbPanel(dbManager);
await dbPanel.initialize();
extensionContext.subscriptions.push(dbPanel);
this.push(dbPanel);
this.push(dbConfigStore);
}
}
export async function initializeDbModule(
extensionContext: vscode.ExtensionContext
): Promise<DbModule> {
const dbModule = new DbModule();
await dbModule.initialize(extensionContext);
return dbModule;
}

View File

@@ -0,0 +1,70 @@
import { DbConfig, RemoteRepositoryList } from './db-config';
import {
DbItemKind,
RemoteOwnerDbItem,
RemoteRepoDbItem,
RemoteSystemDefinedListDbItem,
RemoteUserDefinedListDbItem,
RootLocalDbItem,
RootRemoteDbItem
} from './db-item';
export function createRemoteTree(dbConfig: DbConfig): RootRemoteDbItem {
const systemDefinedLists = [
createSystemDefinedList(10),
createSystemDefinedList(100),
createSystemDefinedList(1000)
];
const userDefinedRepoLists = dbConfig.remote.repositoryLists.map(createUserDefinedList);
const owners = dbConfig.remote.owners.map(createOwnerItem);
const repos = dbConfig.remote.repositories.map(createRepoItem);
return {
kind: DbItemKind.RootRemote,
children: [
...systemDefinedLists,
...owners,
...userDefinedRepoLists,
...repos
]
};
}
export function createLocalTree(): RootLocalDbItem {
// This will be fleshed out further in the future.
return {
kind: DbItemKind.RootLocal
};
}
function createSystemDefinedList(n: number): RemoteSystemDefinedListDbItem {
return {
kind: DbItemKind.RemoteSystemDefinedList,
listName: `top_${n}`,
listDisplayName: `Top ${n} repositories`,
listDescription: `Top ${n} repositories of a language`
};
}
function createUserDefinedList(list: RemoteRepositoryList): RemoteUserDefinedListDbItem {
return {
kind: DbItemKind.RemoteUserDefinedList,
listName: list.name,
repos: list.repositories.map((r) => createRepoItem(r))
};
}
function createOwnerItem(owner: string): RemoteOwnerDbItem {
return {
kind: DbItemKind.RemoteOwner,
ownerName: owner
};
}
function createRepoItem(repo: string): RemoteRepoDbItem {
return {
kind: DbItemKind.RemoteRepo,
repoFullName: repo
};
}

View File

@@ -0,0 +1,49 @@
import { DbItem, DbItemKind } from '../db-item';
import {
createDbTreeViewItemOwner,
createDbTreeViewItemRepo,
createDbTreeViewItemRoot,
createDbTreeViewItemSystemDefinedList,
createDbTreeViewItemUserDefinedList,
DbTreeViewItem
} from './db-tree-view-item';
export function mapDbItemToTreeViewItem(dbItem: DbItem): DbTreeViewItem {
switch (dbItem.kind) {
case DbItemKind.RootLocal:
return createDbTreeViewItemRoot(
dbItem,
'local',
'Local databases',
[]);
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);
}
}

View File

@@ -0,0 +1,39 @@
import * as vscode from 'vscode';
import { commandRunner } from '../../commandRunner';
import { DisposableObject } from '../../pure/disposable-object';
import { DbManager } from '../db-manager';
import { DbTreeDataProvider } from './db-tree-data-provider';
export class DbPanel extends DisposableObject {
private readonly dataProvider: DbTreeDataProvider;
public constructor(
private readonly dbManager: DbManager
) {
super();
this.dataProvider = new DbTreeDataProvider(dbManager);
const treeView = vscode.window.createTreeView('codeQLDatabasesExperimental', {
treeDataProvider: this.dataProvider,
canSelectMany: false
});
this.push(treeView);
}
public async initialize(): Promise<void> {
this.push(
commandRunner(
'codeQLDatabasesExperimental.openConfigFile',
() => this.openConfigFile(),
)
);
}
private async openConfigFile(): Promise<void> {
const configPath = this.dbManager.getConfigPath();
const document = await vscode.workspace.openTextDocument(configPath);
await vscode.window.showTextDocument(document);
}
}

View File

@@ -0,0 +1,49 @@
import { ProviderResult, TreeDataProvider, TreeItem } from 'vscode';
import { createDbTreeViewItemWarning, DbTreeViewItem } from './db-tree-view-item';
import { DbManager } from '../db-manager';
import { mapDbItemToTreeViewItem } from './db-item-mapper';
export class DbTreeDataProvider implements TreeDataProvider<DbTreeViewItem> {
private dbTreeItems: DbTreeViewItem[];
public constructor(
private readonly dbManager: DbManager
) {
this.dbTreeItems = this.createTree();
}
/**
* 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<DbTreeViewItem[]> {
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<TreeItem> {
return node;
}
private createTree(): DbTreeViewItem[] {
const dbItems = this.dbManager.getDbItems();
// Add a sample warning as a proof of concept.
const warningTreeViewItem = createDbTreeViewItemWarning(
'There was an error',
'Fix it'
);
return [...dbItems.map(mapDbItemToTreeViewItem), warningTreeViewItem];
}
}

View File

@@ -0,0 +1,107 @@
import * as vscode from 'vscode';
import {
DbItem,
RemoteOwnerDbItem,
RemoteRepoDbItem,
RemoteSystemDefinedListDbItem,
RemoteUserDefinedListDbItem,
RootLocalDbItem,
RootRemoteDbItem
} from '../db-item';
/**
* Represents an item in the database tree view. This item could be
* representing an actual database item or a warning.
*/
export class DbTreeViewItem extends vscode.TreeItem {
constructor(
public readonly dbItem: DbItem | undefined,
public readonly iconPath: vscode.ThemeIcon | undefined,
public readonly label: string,
public readonly tooltip: string | undefined,
public readonly collapsibleState: vscode.TreeItemCollapsibleState,
public readonly children: DbTreeViewItem[]
) {
super(label, collapsibleState);
}
}
export function createDbTreeViewItemWarning(label: string, tooltip: string): DbTreeViewItem {
return new DbTreeViewItem(
undefined,
new vscode.ThemeIcon('warning', new vscode.ThemeColor('problemsWarningIcon.foreground')),
label,
tooltip,
vscode.TreeItemCollapsibleState.None,
[]
);
}
export function createDbTreeViewItemRoot(
dbItem: RootLocalDbItem | RootRemoteDbItem,
label: string,
tooltip: string,
children: DbTreeViewItem[]
): DbTreeViewItem {
return new DbTreeViewItem(
dbItem,
undefined,
label,
tooltip,
vscode.TreeItemCollapsibleState.Collapsed,
children);
}
export function createDbTreeViewItemSystemDefinedList(
dbItem: RemoteSystemDefinedListDbItem,
label: string,
tooltip: string
): DbTreeViewItem {
return new DbTreeViewItem(
dbItem,
new vscode.ThemeIcon('github'),
label,
tooltip,
vscode.TreeItemCollapsibleState.None,
[]);
}
export function createDbTreeViewItemUserDefinedList(
dbItem: RemoteUserDefinedListDbItem,
listName: string,
children: DbTreeViewItem[]
): DbTreeViewItem {
return new DbTreeViewItem(
dbItem,
undefined,
listName,
undefined,
vscode.TreeItemCollapsibleState.Collapsed,
children);
}
export function createDbTreeViewItemOwner(
dbItem: RemoteOwnerDbItem,
ownerName: string,
): DbTreeViewItem {
return new DbTreeViewItem(
dbItem,
new vscode.ThemeIcon('organization'),
ownerName,
undefined,
vscode.TreeItemCollapsibleState.None,
[]);
}
export function createDbTreeViewItemRepo(
dbItem: RemoteRepoDbItem,
repoName: string,
): DbTreeViewItem {
return new DbTreeViewItem(
dbItem,
new vscode.ThemeIcon('database'),
repoName,
undefined,
vscode.TreeItemCollapsibleState.None,
[]);
}

View File

@@ -111,15 +111,12 @@ import { NewQueryRunner } from './query-server/query-runner';
import { QueryRunner } from './queryRunner';
import { VariantAnalysisView } from './remote-queries/variant-analysis-view';
import { VariantAnalysisViewSerializer } from './remote-queries/variant-analysis-view-serializer';
import { VariantAnalysis } from './remote-queries/shared/variant-analysis';
import {
VariantAnalysis as VariantAnalysisApiResponse,
VariantAnalysisScannedRepository as ApiVariantAnalysisScannedRepository
} from './remote-queries/gh-api/variant-analysis';
import { VariantAnalysis, VariantAnalysisScannedRepository } from './remote-queries/shared/variant-analysis';
import { VariantAnalysisManager } from './remote-queries/variant-analysis-manager';
import { createVariantAnalysisContentProvider } from './remote-queries/variant-analysis-content-provider';
import { VSCodeMockGitHubApiServer } from './mocks/vscode-mock-gh-api-server';
import { VariantAnalysisResultsManager } from './remote-queries/variant-analysis-results-manager';
import { initializeDbModule } from './databases/db-module';
/**
* extension.ts
@@ -537,9 +534,6 @@ async function activateWithInstalledDistribution(
ctx.subscriptions.push(logScannerService);
ctx.subscriptions.push(logScannerService.scanners.registerLogScannerProvider(new JoinOrderScannerProvider(() => joinOrderWarningThreshold())));
void logger.log('Reading query history');
await qhm.readQueryHistory();
void logger.log('Initializing compare view.');
const compareView = new CompareView(
ctx,
@@ -963,8 +957,8 @@ async function activateWithInstalledDistribution(
ctx.subscriptions.push(
commandRunner('codeQL.autoDownloadVariantAnalysisResult', async (
scannedRepo: ApiVariantAnalysisScannedRepository,
variantAnalysisSummary: VariantAnalysisApiResponse,
scannedRepo: VariantAnalysisScannedRepository,
variantAnalysisSummary: VariantAnalysis,
token: CancellationToken
) => {
await variantAnalysisManager.enqueueDownload(scannedRepo, variantAnalysisSummary, token);
@@ -1241,6 +1235,12 @@ async function activateWithInstalledDistribution(
await commands.executeCommand('codeQLDatabases.removeOrphanedDatabases');
void logger.log('Reading query history');
await qhm.readQueryHistory();
const dbModule = await initializeDbModule(ctx);
ctx.subscriptions.push(dbModule);
void logger.log('Successfully finished extension initialization.');
return {

View File

@@ -7,6 +7,7 @@ import { RemoteQueryHistoryItem } from './remote-queries/remote-query-history-it
import { VariantAnalysisHistoryItem } from './remote-queries/variant-analysis-history-item';
import { assertNever } from './pure/helpers-pure';
import { pluralize } from './pure/word';
import { humanizeQueryStatus } from './query-status';
interface InterpolateReplacements {
t: string; // Start time
@@ -86,7 +87,7 @@ export class HistoryItemLabelProvider {
q: `${item.remoteQuery.queryName} (${item.remoteQuery.language})`,
d: buildRepoLabel(item),
r: resultCount,
s: item.status,
s: humanizeQueryStatus(item.status),
f: path.basename(item.remoteQuery.queryFilePath),
'%': '%'
};
@@ -99,7 +100,7 @@ export class HistoryItemLabelProvider {
q: `${item.variantAnalysis.query.name} (${item.variantAnalysis.query.language})`,
d: buildRepoLabel(item),
r: resultCount,
s: item.status,
s: humanizeQueryStatus(item.status),
f: path.basename(item.variantAnalysis.query.filePath),
'%': '%',
};

View File

@@ -7,7 +7,7 @@ import {
languages,
Uri,
window as Window,
env
env, WebviewPanel
} from 'vscode';
import * as cli from './cli';
import { CodeQLCliServer } from './cli';
@@ -341,6 +341,8 @@ export class ResultsView extends AbstractWebview<IntoResultsViewMsg, FromResults
return;
}
const panel = await this.getPanel();
this._interpretation = undefined;
const interpretationPage = await this.interpretResultsInfo(
fullQuery.completedQuery.query,
@@ -350,12 +352,11 @@ export class ResultsView extends AbstractWebview<IntoResultsViewMsg, FromResults
const sortedResultsMap: SortedResultsMap = {};
Object.entries(fullQuery.completedQuery.sortedResultsInfo).forEach(
([k, v]) =>
(sortedResultsMap[k] = this.convertPathPropertiesToWebviewUris(v))
(sortedResultsMap[k] = this.convertPathPropertiesToWebviewUris(panel, v))
);
this._displayedQuery = fullQuery;
const panel = this.getPanel();
await this.waitForPanelLoaded();
if (!panel.visible) {
if (forceReveal === WebviewReveal.Forced) {
@@ -426,6 +427,7 @@ export class ResultsView extends AbstractWebview<IntoResultsViewMsg, FromResults
interpretation: interpretationPage,
origResultsPaths: fullQuery.completedQuery.query.resultsPaths,
resultsPath: this.convertPathToWebviewUri(
panel,
fullQuery.completedQuery.query.resultsPaths.resultsPath
),
parsedResultSets,
@@ -498,10 +500,12 @@ export class ResultsView extends AbstractWebview<IntoResultsViewMsg, FromResults
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(v))
(sortedResultsMap[k] = this.convertPathPropertiesToWebviewUris(panel, v))
);
const resultSetSchemas = await this.getResultSetSchemas(results.completedQuery, sorted ? selectedTable : '');
@@ -544,6 +548,7 @@ export class ResultsView extends AbstractWebview<IntoResultsViewMsg, FromResults
interpretation: this._interpretation,
origResultsPaths: results.completedQuery.query.resultsPaths,
resultsPath: this.convertPathToWebviewUri(
panel,
results.completedQuery.query.resultsPaths.resultsPath
),
parsedResultSets,
@@ -812,15 +817,16 @@ export class ResultsView extends AbstractWebview<IntoResultsViewMsg, FromResults
this._diagnosticCollection.set(diagnostics);
}
private convertPathToWebviewUri(path: string): string {
return fileUriToWebviewUri(this.getPanel(), Uri.file(path));
private convertPathToWebviewUri(panel: WebviewPanel, path: string): string {
return fileUriToWebviewUri(panel, Uri.file(path));
}
private convertPathPropertiesToWebviewUris(
panel: WebviewPanel,
info: SortedResultSetInfo
): SortedResultSetInfo {
return {
resultsPath: this.convertPathToWebviewUri(info.resultsPath),
resultsPath: this.convertPathToWebviewUri(panel, info.resultsPath),
sortState: info.sortState,
};
}

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -116,7 +118,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "in_progress"
},
@@ -125,7 +129,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -136,7 +142,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -145,7 +153,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 702,

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -116,7 +118,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "in_progress"
},
@@ -125,7 +129,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -136,7 +142,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -145,7 +153,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 702,

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -116,7 +118,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "in_progress"
},
@@ -125,7 +129,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -136,7 +142,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -145,7 +153,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 702,

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -116,7 +118,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 156706,
@@ -127,7 +131,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -138,7 +144,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -147,7 +155,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 702,

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "pending"
},
@@ -114,7 +116,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "pending"
},
@@ -123,7 +127,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "pending"
},
@@ -132,7 +138,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "pending"
},
@@ -141,7 +149,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "pending"
}

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -116,7 +118,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 156706,
@@ -127,7 +131,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -138,7 +144,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -147,7 +155,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 702,

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -116,7 +118,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 156706,
@@ -127,7 +131,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -138,7 +144,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -147,7 +155,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 702,

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -116,7 +118,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 156706,
@@ -127,7 +131,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -138,7 +144,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -147,7 +155,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 702,

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -116,7 +118,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 156706,
@@ -127,7 +131,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -138,7 +144,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 710,
@@ -149,7 +157,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 702,

View File

@@ -106,7 +106,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -117,7 +119,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 156706,
@@ -128,7 +132,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -139,7 +145,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 710,
@@ -150,7 +158,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 702,

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "in_progress"
},
@@ -114,7 +116,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "in_progress"
},
@@ -123,7 +127,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "pending"
},
@@ -132,7 +138,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "pending"
},
@@ -141,7 +149,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "pending"
}

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "in_progress"
},
@@ -114,7 +116,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "in_progress"
},
@@ -123,7 +127,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "in_progress"
},
@@ -132,7 +138,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -141,7 +149,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "in_progress"
}

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "in_progress"
},
@@ -114,7 +116,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "in_progress"
},
@@ -123,7 +127,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "in_progress"
},
@@ -132,7 +138,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -141,7 +149,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "in_progress"
}

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "in_progress"
},
@@ -114,7 +116,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "in_progress"
},
@@ -123,7 +127,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "in_progress"
},
@@ -132,7 +138,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -141,7 +149,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "in_progress"
}

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "in_progress",
"artifact_size_in_bytes": 81841
@@ -115,7 +117,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "in_progress"
},
@@ -124,7 +128,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "in_progress"
},
@@ -133,7 +139,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -142,7 +150,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "in_progress"
}

View File

@@ -105,7 +105,9 @@
"id": 206444,
"name": "hive",
"full_name": "apache/hive",
"private": false
"private": false,
"stargazers_count": 4523,
"updated_at": "2022-11-02T10:04:02Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 81841,
@@ -116,7 +118,9 @@
"id": 20753500,
"name": "ng-nice",
"full_name": "angular-cn/ng-nice",
"private": false
"private": false,
"stargazers_count": 192,
"updated_at": "2022-03-17T08:34:30Z"
},
"analysis_status": "in_progress"
},
@@ -125,7 +129,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "in_progress"
},
@@ -134,7 +140,9 @@
"id": 236095576,
"name": "backstage",
"full_name": "backstage/backstage",
"private": false
"private": false,
"stargazers_count": 19033,
"updated_at": "2022-11-02T10:25:24Z"
},
"analysis_status": "in_progress"
},
@@ -143,7 +151,9 @@
"id": 257485422,
"name": "vite",
"full_name": "vitejs/vite",
"private": false
"private": false,
"stargazers_count": 49064,
"updated_at": "2022-11-02T11:29:22Z"
},
"analysis_status": "in_progress"
}

View File

@@ -105,7 +105,9 @@
"id": 478996,
"name": "jquery-ui",
"full_name": "jquery/jquery-ui",
"private": false
"private": false,
"stargazers_count": 11085,
"updated_at": "2022-11-01T11:06:31Z"
},
"analysis_status": "pending"
},
@@ -114,7 +116,9 @@
"id": 648414,
"name": "jquery-validation",
"full_name": "jquery-validation/jquery-validation",
"private": false
"private": false,
"stargazers_count": 10250,
"updated_at": "2022-11-01T17:52:18Z"
},
"analysis_status": "pending"
},
@@ -123,7 +127,9 @@
"id": 2950981,
"name": "azure-sdk-for-node",
"full_name": "Azure/azure-sdk-for-node",
"private": false
"private": false,
"stargazers_count": 1183,
"updated_at": "2022-11-02T06:42:39Z"
},
"analysis_status": "pending"
},
@@ -132,7 +138,9 @@
"id": 17335035,
"name": "bootstrap-fileinput",
"full_name": "kartik-v/bootstrap-fileinput",
"private": false
"private": false,
"stargazers_count": 5238,
"updated_at": "2022-11-02T11:01:58Z"
},
"analysis_status": "pending"
},
@@ -141,7 +149,9 @@
"id": 18782726,
"name": "OwlCarousel2",
"full_name": "OwlCarousel2/OwlCarousel2",
"private": false
"private": false,
"stargazers_count": 7732,
"updated_at": "2022-11-02T02:26:29Z"
},
"analysis_status": "pending"
}
@@ -154,605 +164,805 @@
"id": 48296,
"name": "raphael",
"full_name": "DmitryBaranovskiy/raphael",
"private": false
"private": false,
"stargazers_count": 11134,
"updated_at": "2022-11-02T09:44:58Z"
},
{
"id": 63557,
"name": "jquery-mousewheel",
"full_name": "jquery/jquery-mousewheel",
"private": false
"private": false,
"stargazers_count": 3903,
"updated_at": "2022-11-01T03:59:45Z"
},
{
"id": 75547,
"name": "showdown",
"full_name": "showdownjs/showdown",
"private": false
"private": false,
"stargazers_count": 12875,
"updated_at": "2022-11-02T03:36:15Z"
},
{
"id": 84009,
"name": "jasmine",
"full_name": "jasmine/jasmine",
"private": false
"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
"private": false,
"stargazers_count": 7902,
"updated_at": "2022-11-02T07:40:06Z"
},
{
"id": 165557,
"name": "js-base64",
"full_name": "dankogai/js-base64",
"private": false
"private": false,
"stargazers_count": 3831,
"updated_at": "2022-11-02T03:17:43Z"
},
{
"id": 167174,
"name": "jquery",
"full_name": "jquery/jquery",
"private": false
"private": false,
"stargazers_count": 56910,
"updated_at": "2022-11-02T00:55:34Z"
},
{
"id": 237159,
"name": "express",
"full_name": "expressjs/express",
"private": false
"private": false,
"stargazers_count": 58776,
"updated_at": "2022-11-02T10:33:45Z"
},
{
"id": 292525,
"name": "jszip",
"full_name": "Stuk/jszip",
"private": false
"private": false,
"stargazers_count": 8412,
"updated_at": "2022-11-02T10:46:56Z"
},
{
"id": 317757,
"name": "Modernizr",
"full_name": "Modernizr/Modernizr",
"private": false
"private": false,
"stargazers_count": 25349,
"updated_at": "2022-11-02T10:11:31Z"
},
{
"id": 326688,
"name": "mustache.js",
"full_name": "janl/mustache.js",
"private": false
"private": false,
"stargazers_count": 15595,
"updated_at": "2022-11-02T04:12:53Z"
},
{
"id": 349241,
"name": "underscore",
"full_name": "jashkenas/underscore",
"private": false
"private": false,
"stargazers_count": 26655,
"updated_at": "2022-11-01T23:21:28Z"
},
{
"id": 357681,
"name": "node-glob",
"full_name": "isaacs/node-glob",
"private": false
"private": false,
"stargazers_count": 7739,
"updated_at": "2022-11-02T08:23:54Z"
},
{
"id": 381979,
"name": "fullcalendar",
"full_name": "fullcalendar/fullcalendar",
"private": false
"private": false,
"stargazers_count": 15569,
"updated_at": "2022-11-02T09:19:14Z"
},
{
"id": 402046,
"name": "jsPDF",
"full_name": "parallax/jsPDF",
"private": false
"private": false,
"stargazers_count": 25408,
"updated_at": "2022-11-02T10:39:20Z"
},
{
"id": 441854,
"name": "markdown-js",
"full_name": "evilstreak/markdown-js",
"private": false
"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
"private": false,
"stargazers_count": 9574,
"updated_at": "2022-11-02T10:57:50Z"
},
{
"id": 467471,
"name": "tinymce",
"full_name": "tinymce/tinymce",
"private": false
"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
"private": false,
"stargazers_count": 5500,
"updated_at": "2022-11-02T07:01:50Z"
},
{
"id": 478584,
"name": "jsdom",
"full_name": "jsdom/jsdom",
"private": false
"private": false,
"stargazers_count": 18052,
"updated_at": "2022-11-02T11:18:57Z"
},
{
"id": 486550,
"name": "html5-boilerplate",
"full_name": "h5bp/html5-boilerplate",
"private": false
"private": false,
"stargazers_count": 53520,
"updated_at": "2022-11-02T07:30:25Z"
},
{
"id": 501326,
"name": "requirejs",
"full_name": "requirejs/requirejs",
"private": false
"private": false,
"stargazers_count": 12842,
"updated_at": "2022-11-02T11:02:32Z"
},
{
"id": 504220,
"name": "html-minifier",
"full_name": "kangax/html-minifier",
"private": false
"private": false,
"stargazers_count": 4700,
"updated_at": "2022-10-29T16:27:36Z"
},
{
"id": 508894,
"name": "sax-js",
"full_name": "isaacs/sax-js",
"private": false
"private": false,
"stargazers_count": 1015,
"updated_at": "2022-10-27T12:56:55Z"
},
{
"id": 519390,
"name": "emmet",
"full_name": "emmetio/emmet",
"private": false
"private": false,
"stargazers_count": 4235,
"updated_at": "2022-10-29T09:24:35Z"
},
{
"id": 527644,
"name": "less.js",
"full_name": "less/less.js",
"private": false
"private": false,
"stargazers_count": 16866,
"updated_at": "2022-11-02T10:47:45Z"
},
{
"id": 534940,
"name": "mime",
"full_name": "broofa/mime",
"private": false
"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
"private": false,
"stargazers_count": 9988,
"updated_at": "2022-11-02T07:19:51Z"
},
{
"id": 557980,
"name": "socket.io",
"full_name": "socketio/socket.io",
"private": false
"private": false,
"stargazers_count": 56972,
"updated_at": "2022-11-02T06:15:27Z"
},
{
"id": 560495,
"name": "jsdoc",
"full_name": "jsdoc/jsdoc",
"private": false
"private": false,
"stargazers_count": 13246,
"updated_at": "2022-11-01T20:51:26Z"
},
{
"id": 573569,
"name": "jake",
"full_name": "jakejs/jake",
"private": false
"private": false,
"stargazers_count": 1923,
"updated_at": "2022-10-25T19:36:45Z"
},
{
"id": 576201,
"name": "three.js",
"full_name": "mrdoob/three.js",
"private": false
"private": false,
"stargazers_count": 86505,
"updated_at": "2022-11-02T10:46:23Z"
},
{
"id": 597879,
"name": "mongoose",
"full_name": "Automattic/mongoose",
"private": false
"private": false,
"stargazers_count": 24930,
"updated_at": "2022-11-02T09:51:25Z"
},
{
"id": 600637,
"name": "stats.js",
"full_name": "mrdoob/stats.js",
"private": false
"private": false,
"stargazers_count": 7932,
"updated_at": "2022-10-31T09:19:23Z"
},
{
"id": 602604,
"name": "pegjs",
"full_name": "pegjs/pegjs",
"private": false
"private": false,
"stargazers_count": 4503,
"updated_at": "2022-10-30T05:03:04Z"
},
{
"id": 620636,
"name": "webfontloader",
"full_name": "typekit/webfontloader",
"private": false
"private": false,
"stargazers_count": 9013,
"updated_at": "2022-11-02T05:48:14Z"
},
{
"id": 655209,
"name": "formidable",
"full_name": "node-formidable/formidable",
"private": false
"private": false,
"stargazers_count": 6404,
"updated_at": "2022-11-02T09:18:22Z"
},
{
"id": 667006,
"name": "video.js",
"full_name": "videojs/video.js",
"private": false
"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
"private": false,
"stargazers_count": 4427,
"updated_at": "2022-11-02T05:50:43Z"
},
{
"id": 687836,
"name": "connect",
"full_name": "senchalabs/connect",
"private": false
"private": false,
"stargazers_count": 9559,
"updated_at": "2022-11-01T08:20:04Z"
},
{
"id": 691146,
"name": "tween.js",
"full_name": "tweenjs/tween.js",
"private": false
"private": false,
"stargazers_count": 8888,
"updated_at": "2022-11-02T06:57:57Z"
},
{
"id": 698041,
"name": "async",
"full_name": "caolan/async",
"private": false
"private": false,
"stargazers_count": 27723,
"updated_at": "2022-11-02T04:50:06Z"
},
{
"id": 712530,
"name": "fabric.js",
"full_name": "fabricjs/fabric.js",
"private": false
"private": false,
"stargazers_count": 23149,
"updated_at": "2022-11-02T09:45:43Z"
},
{
"id": 714074,
"name": "pouchdb",
"full_name": "pouchdb/pouchdb",
"private": false
"private": false,
"stargazers_count": 15318,
"updated_at": "2022-11-02T10:14:50Z"
},
{
"id": 715168,
"name": "colors.js",
"full_name": "Marak/colors.js",
"private": false
"private": false,
"stargazers_count": 5019,
"updated_at": "2022-11-02T05:17:19Z"
},
{
"id": 734934,
"name": "pug",
"full_name": "pugjs/pug",
"private": false
"private": false,
"stargazers_count": 20988,
"updated_at": "2022-11-02T06:43:03Z"
},
{
"id": 734957,
"name": "node-cron",
"full_name": "kelektiv/node-cron",
"private": false
"private": false,
"stargazers_count": 7598,
"updated_at": "2022-11-01T17:12:28Z"
},
{
"id": 743723,
"name": "store.js",
"full_name": "marcuswestin/store.js",
"private": false
"private": false,
"stargazers_count": 13844,
"updated_at": "2022-11-02T03:26:50Z"
},
{
"id": 747698,
"name": "sinon",
"full_name": "sinonjs/sinon",
"private": false
"private": false,
"stargazers_count": 9149,
"updated_at": "2022-11-02T09:18:57Z"
},
{
"id": 757363,
"name": "knockout",
"full_name": "knockout/knockout",
"private": false
"private": false,
"stargazers_count": 10247,
"updated_at": "2022-10-31T11:09:48Z"
},
{
"id": 779570,
"name": "forge",
"full_name": "digitalbazaar/forge",
"private": false
"private": false,
"stargazers_count": 4541,
"updated_at": "2022-11-02T06:45:45Z"
},
{
"id": 790359,
"name": "sequelize",
"full_name": "sequelize/sequelize",
"private": false
"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
"private": false,
"stargazers_count": 13042,
"updated_at": "2022-11-01T16:51:43Z"
},
{
"id": 800115,
"name": "underscore.string",
"full_name": "esamattis/underscore.string",
"private": false
"private": false,
"stargazers_count": 3374,
"updated_at": "2022-10-29T12:20:47Z"
},
{
"id": 805461,
"name": "mysql",
"full_name": "mysqljs/mysql",
"private": false
"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
"private": false,
"stargazers_count": 16837,
"updated_at": "2022-11-01T10:57:04Z"
},
{
"id": 887025,
"name": "q",
"full_name": "kriskowal/q",
"private": false
"private": false,
"stargazers_count": 14948,
"updated_at": "2022-10-28T07:31:40Z"
},
{
"id": 893522,
"name": "node-serialport",
"full_name": "serialport/node-serialport",
"private": false
"private": false,
"stargazers_count": 5320,
"updated_at": "2022-11-01T00:00:33Z"
},
{
"id": 908893,
"name": "node-redis",
"full_name": "redis/node-redis",
"private": false
"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
"private": false,
"stargazers_count": 7110,
"updated_at": "2022-10-28T06:39:48Z"
},
{
"id": 926231,
"name": "Inputmask",
"full_name": "RobinHerbots/Inputmask",
"private": false
"private": false,
"stargazers_count": 5987,
"updated_at": "2022-11-02T05:50:57Z"
},
{
"id": 931039,
"name": "browserify",
"full_name": "browserify/browserify",
"private": false
"private": false,
"stargazers_count": 14254,
"updated_at": "2022-11-01T03:37:09Z"
},
{
"id": 931135,
"name": "Leaflet",
"full_name": "Leaflet/Leaflet",
"private": false
"private": false,
"stargazers_count": 36010,
"updated_at": "2022-11-02T10:09:58Z"
},
{
"id": 942903,
"name": "forever",
"full_name": "foreversd/forever",
"private": false
"private": false,
"stargazers_count": 13663,
"updated_at": "2022-11-01T05:29:05Z"
},
{
"id": 943149,
"name": "d3",
"full_name": "d3/d3",
"private": false
"private": false,
"stargazers_count": 103304,
"updated_at": "2022-11-02T09:49:28Z"
},
{
"id": 947175,
"name": "json-schema",
"full_name": "kriszyp/json-schema",
"private": false
"private": false,
"stargazers_count": 499,
"updated_at": "2022-10-19T19:17:53Z"
},
{
"id": 952189,
"name": "backbone",
"full_name": "jashkenas/backbone",
"private": false
"private": false,
"stargazers_count": 27936,
"updated_at": "2022-11-02T03:16:33Z"
},
{
"id": 958314,
"name": "nodemon",
"full_name": "remy/nodemon",
"private": false
"private": false,
"stargazers_count": 24604,
"updated_at": "2022-11-02T10:11:39Z"
},
{
"id": 965782,
"name": "validator.js",
"full_name": "validatorjs/validator.js",
"private": false
"private": false,
"stargazers_count": 20415,
"updated_at": "2022-11-02T10:18:55Z"
},
{
"id": 991475,
"name": "node-postgres",
"full_name": "brianc/node-postgres",
"private": false
"private": false,
"stargazers_count": 10751,
"updated_at": "2022-10-31T12:20:17Z"
},
{
"id": 996158,
"name": "watch",
"full_name": "mikeal/watch",
"private": false
"private": false,
"stargazers_count": 1250,
"updated_at": "2022-11-01T17:14:59Z"
},
{
"id": 1025209,
"name": "CSSOM",
"full_name": "NV/CSSOM",
"private": false
"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
"private": false,
"stargazers_count": 5797,
"updated_at": "2022-11-02T07:54:31Z"
},
{
"id": 1186030,
"name": "node-qrcode",
"full_name": "soldair/node-qrcode",
"private": false
"private": false,
"stargazers_count": 6128,
"updated_at": "2022-11-02T05:16:11Z"
},
{
"id": 1203139,
"name": "uuid",
"full_name": "uuidjs/uuid",
"private": false
"private": false,
"stargazers_count": 12769,
"updated_at": "2022-11-02T10:25:19Z"
},
{
"id": 1204214,
"name": "stylus",
"full_name": "stylus/stylus",
"private": false
"private": false,
"stargazers_count": 10980,
"updated_at": "2022-11-02T10:57:58Z"
},
{
"id": 1206546,
"name": "winston",
"full_name": "winstonjs/winston",
"private": false
"private": false,
"stargazers_count": 19683,
"updated_at": "2022-11-02T09:13:43Z"
},
{
"id": 1213225,
"name": "highlight.js",
"full_name": "highlightjs/highlight.js",
"private": false
"private": false,
"stargazers_count": 20619,
"updated_at": "2022-11-02T10:05:24Z"
},
{
"id": 1218383,
"name": "cli-table",
"full_name": "Automattic/cli-table",
"private": false
"private": false,
"stargazers_count": 2206,
"updated_at": "2022-10-29T22:05:42Z"
},
{
"id": 1254497,
"name": "codemirror5",
"full_name": "codemirror/codemirror5",
"private": false
"private": false,
"stargazers_count": 25436,
"updated_at": "2022-11-02T07:14:55Z"
},
{
"id": 1272424,
"name": "nodemailer",
"full_name": "nodemailer/nodemailer",
"private": false
"private": false,
"stargazers_count": 15120,
"updated_at": "2022-11-02T07:16:15Z"
},
{
"id": 1272666,
"name": "jshint",
"full_name": "jshint/jshint",
"private": false
"private": false,
"stargazers_count": 8800,
"updated_at": "2022-11-02T02:43:46Z"
},
{
"id": 1283503,
"name": "request",
"full_name": "request/request",
"private": false
"private": false,
"stargazers_count": 25558,
"updated_at": "2022-11-02T07:14:37Z"
},
{
"id": 1295612,
"name": "flot",
"full_name": "flot/flot",
"private": false
"private": false,
"stargazers_count": 5954,
"updated_at": "2022-11-02T00:09:37Z"
},
{
"id": 1341324,
"name": "rimraf",
"full_name": "isaacs/rimraf",
"private": false
"private": false,
"stargazers_count": 4882,
"updated_at": "2022-11-01T02:30:44Z"
},
{
"id": 1357199,
"name": "node-semver",
"full_name": "npm/node-semver",
"private": false
"private": false,
"stargazers_count": 4417,
"updated_at": "2022-11-01T14:26:03Z"
},
{
"id": 1369824,
"name": "csso",
"full_name": "css/csso",
"private": false
"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
"private": false,
"stargazers_count": 3994,
"updated_at": "2022-10-31T19:00:55Z"
},
{
"id": 1424470,
"name": "moment",
"full_name": "moment/moment",
"private": false
"private": false,
"stargazers_count": 47014,
"updated_at": "2022-11-02T09:23:25Z"
},
{
"id": 1451352,
"name": "mocha",
"full_name": "mochajs/mocha",
"private": false
"private": false,
"stargazers_count": 21735,
"updated_at": "2022-11-02T05:54:18Z"
},
{
"id": 1474943,
"name": "node-dateformat",
"full_name": "felixge/node-dateformat",
"private": false
"private": false,
"stargazers_count": 1277,
"updated_at": "2022-10-23T15:41:37Z"
},
{
"id": 1534331,
"name": "node-tar",
"full_name": "npm/node-tar",
"private": false
"private": false,
"stargazers_count": 701,
"updated_at": "2022-10-31T18:54:48Z"
},
{
"id": 1542219,
"name": "jsdiff",
"full_name": "kpdecker/jsdiff",
"private": false
"private": false,
"stargazers_count": 6655,
"updated_at": "2022-11-02T00:34:01Z"
},
{
"id": 1544436,
"name": "nopt",
"full_name": "npm/nopt",
"private": false
"private": false,
"stargazers_count": 513,
"updated_at": "2022-10-30T02:25:47Z"
},
{
"id": 1545869,
"name": "when",
"full_name": "cujojs/when",
"private": false
"private": false,
"stargazers_count": 3446,
"updated_at": "2022-11-02T09:39:58Z"
},
{
"id": 1569980,
"name": "MQTT.js",
"full_name": "mqttjs/MQTT.js",
"private": false
"private": false,
"stargazers_count": 7315,
"updated_at": "2022-11-01T06:35:21Z"
},
{
"id": 1580001,
"name": "inherits",
"full_name": "isaacs/inherits",
"private": false
"private": false,
"stargazers_count": 345,
"updated_at": "2022-10-17T21:30:38Z"
},
{
"id": 1580851,
"name": "PhotoSwipe",
"full_name": "dimsemenov/PhotoSwipe",
"private": false
"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
"private": false,
"stargazers_count": 2775,
"updated_at": "2022-11-01T10:32:34Z"
},
{
"id": 1590986,
"name": "WebSocket-Node",
"full_name": "theturtle32/WebSocket-Node",
"private": false
"private": false,
"stargazers_count": 3597,
"updated_at": "2022-11-02T02:14:47Z"
}
]
},
"not_found_repo_nwos": {
"not_found_repos": {
"repository_count": 110,
"repository_full_names": [
"evanw/node-source-map-support",

View File

@@ -105,7 +105,9 @@
"id": 478996,
"name": "jquery-ui",
"full_name": "jquery/jquery-ui",
"private": false
"private": false,
"stargazers_count": 11085,
"updated_at": "2022-11-01T11:06:31Z"
},
"analysis_status": "pending"
},
@@ -114,7 +116,9 @@
"id": 648414,
"name": "jquery-validation",
"full_name": "jquery-validation/jquery-validation",
"private": false
"private": false,
"stargazers_count": 10250,
"updated_at": "2022-11-01T17:52:18Z"
},
"analysis_status": "pending"
},
@@ -123,7 +127,9 @@
"id": 2950981,
"name": "azure-sdk-for-node",
"full_name": "Azure/azure-sdk-for-node",
"private": false
"private": false,
"stargazers_count": 1183,
"updated_at": "2022-11-02T06:42:39Z"
},
"analysis_status": "pending"
},
@@ -132,7 +138,9 @@
"id": 17335035,
"name": "bootstrap-fileinput",
"full_name": "kartik-v/bootstrap-fileinput",
"private": false
"private": false,
"stargazers_count": 5238,
"updated_at": "2022-11-02T11:01:58Z"
},
"analysis_status": "pending"
},
@@ -141,7 +149,9 @@
"id": 18782726,
"name": "OwlCarousel2",
"full_name": "OwlCarousel2/OwlCarousel2",
"private": false
"private": false,
"stargazers_count": 7732,
"updated_at": "2022-11-02T02:26:29Z"
},
"analysis_status": "pending"
}
@@ -154,605 +164,805 @@
"id": 48296,
"name": "raphael",
"full_name": "DmitryBaranovskiy/raphael",
"private": false
"private": false,
"stargazers_count": 11134,
"updated_at": "2022-11-02T09:44:58Z"
},
{
"id": 63557,
"name": "jquery-mousewheel",
"full_name": "jquery/jquery-mousewheel",
"private": false
"private": false,
"stargazers_count": 3903,
"updated_at": "2022-11-01T03:59:45Z"
},
{
"id": 75547,
"name": "showdown",
"full_name": "showdownjs/showdown",
"private": false
"private": false,
"stargazers_count": 12875,
"updated_at": "2022-11-02T03:36:15Z"
},
{
"id": 84009,
"name": "jasmine",
"full_name": "jasmine/jasmine",
"private": false
"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
"private": false,
"stargazers_count": 7902,
"updated_at": "2022-11-02T07:40:06Z"
},
{
"id": 165557,
"name": "js-base64",
"full_name": "dankogai/js-base64",
"private": false
"private": false,
"stargazers_count": 3831,
"updated_at": "2022-11-02T03:17:43Z"
},
{
"id": 167174,
"name": "jquery",
"full_name": "jquery/jquery",
"private": false
"private": false,
"stargazers_count": 56910,
"updated_at": "2022-11-02T00:55:34Z"
},
{
"id": 237159,
"name": "express",
"full_name": "expressjs/express",
"private": false
"private": false,
"stargazers_count": 58776,
"updated_at": "2022-11-02T10:33:45Z"
},
{
"id": 292525,
"name": "jszip",
"full_name": "Stuk/jszip",
"private": false
"private": false,
"stargazers_count": 8412,
"updated_at": "2022-11-02T10:46:56Z"
},
{
"id": 317757,
"name": "Modernizr",
"full_name": "Modernizr/Modernizr",
"private": false
"private": false,
"stargazers_count": 25349,
"updated_at": "2022-11-02T10:11:31Z"
},
{
"id": 326688,
"name": "mustache.js",
"full_name": "janl/mustache.js",
"private": false
"private": false,
"stargazers_count": 15595,
"updated_at": "2022-11-02T04:12:53Z"
},
{
"id": 349241,
"name": "underscore",
"full_name": "jashkenas/underscore",
"private": false
"private": false,
"stargazers_count": 26655,
"updated_at": "2022-11-01T23:21:28Z"
},
{
"id": 357681,
"name": "node-glob",
"full_name": "isaacs/node-glob",
"private": false
"private": false,
"stargazers_count": 7739,
"updated_at": "2022-11-02T08:23:54Z"
},
{
"id": 381979,
"name": "fullcalendar",
"full_name": "fullcalendar/fullcalendar",
"private": false
"private": false,
"stargazers_count": 15569,
"updated_at": "2022-11-02T09:19:14Z"
},
{
"id": 402046,
"name": "jsPDF",
"full_name": "parallax/jsPDF",
"private": false
"private": false,
"stargazers_count": 25408,
"updated_at": "2022-11-02T10:39:20Z"
},
{
"id": 441854,
"name": "markdown-js",
"full_name": "evilstreak/markdown-js",
"private": false
"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
"private": false,
"stargazers_count": 9574,
"updated_at": "2022-11-02T10:57:50Z"
},
{
"id": 467471,
"name": "tinymce",
"full_name": "tinymce/tinymce",
"private": false
"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
"private": false,
"stargazers_count": 5500,
"updated_at": "2022-11-02T07:01:50Z"
},
{
"id": 478584,
"name": "jsdom",
"full_name": "jsdom/jsdom",
"private": false
"private": false,
"stargazers_count": 18052,
"updated_at": "2022-11-02T11:18:57Z"
},
{
"id": 486550,
"name": "html5-boilerplate",
"full_name": "h5bp/html5-boilerplate",
"private": false
"private": false,
"stargazers_count": 53520,
"updated_at": "2022-11-02T07:30:25Z"
},
{
"id": 501326,
"name": "requirejs",
"full_name": "requirejs/requirejs",
"private": false
"private": false,
"stargazers_count": 12842,
"updated_at": "2022-11-02T11:02:32Z"
},
{
"id": 504220,
"name": "html-minifier",
"full_name": "kangax/html-minifier",
"private": false
"private": false,
"stargazers_count": 4700,
"updated_at": "2022-10-29T16:27:36Z"
},
{
"id": 508894,
"name": "sax-js",
"full_name": "isaacs/sax-js",
"private": false
"private": false,
"stargazers_count": 1015,
"updated_at": "2022-10-27T12:56:55Z"
},
{
"id": 519390,
"name": "emmet",
"full_name": "emmetio/emmet",
"private": false
"private": false,
"stargazers_count": 4235,
"updated_at": "2022-10-29T09:24:35Z"
},
{
"id": 527644,
"name": "less.js",
"full_name": "less/less.js",
"private": false
"private": false,
"stargazers_count": 16866,
"updated_at": "2022-11-02T10:47:45Z"
},
{
"id": 534940,
"name": "mime",
"full_name": "broofa/mime",
"private": false
"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
"private": false,
"stargazers_count": 9988,
"updated_at": "2022-11-02T07:19:51Z"
},
{
"id": 557980,
"name": "socket.io",
"full_name": "socketio/socket.io",
"private": false
"private": false,
"stargazers_count": 56972,
"updated_at": "2022-11-02T06:15:27Z"
},
{
"id": 560495,
"name": "jsdoc",
"full_name": "jsdoc/jsdoc",
"private": false
"private": false,
"stargazers_count": 13246,
"updated_at": "2022-11-01T20:51:26Z"
},
{
"id": 573569,
"name": "jake",
"full_name": "jakejs/jake",
"private": false
"private": false,
"stargazers_count": 1923,
"updated_at": "2022-10-25T19:36:45Z"
},
{
"id": 576201,
"name": "three.js",
"full_name": "mrdoob/three.js",
"private": false
"private": false,
"stargazers_count": 86505,
"updated_at": "2022-11-02T10:46:23Z"
},
{
"id": 597879,
"name": "mongoose",
"full_name": "Automattic/mongoose",
"private": false
"private": false,
"stargazers_count": 24930,
"updated_at": "2022-11-02T09:51:25Z"
},
{
"id": 600637,
"name": "stats.js",
"full_name": "mrdoob/stats.js",
"private": false
"private": false,
"stargazers_count": 7932,
"updated_at": "2022-10-31T09:19:23Z"
},
{
"id": 602604,
"name": "pegjs",
"full_name": "pegjs/pegjs",
"private": false
"private": false,
"stargazers_count": 4503,
"updated_at": "2022-10-30T05:03:04Z"
},
{
"id": 620636,
"name": "webfontloader",
"full_name": "typekit/webfontloader",
"private": false
"private": false,
"stargazers_count": 9013,
"updated_at": "2022-11-02T05:48:14Z"
},
{
"id": 655209,
"name": "formidable",
"full_name": "node-formidable/formidable",
"private": false
"private": false,
"stargazers_count": 6404,
"updated_at": "2022-11-02T09:18:22Z"
},
{
"id": 667006,
"name": "video.js",
"full_name": "videojs/video.js",
"private": false
"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
"private": false,
"stargazers_count": 4427,
"updated_at": "2022-11-02T05:50:43Z"
},
{
"id": 687836,
"name": "connect",
"full_name": "senchalabs/connect",
"private": false
"private": false,
"stargazers_count": 9559,
"updated_at": "2022-11-01T08:20:04Z"
},
{
"id": 691146,
"name": "tween.js",
"full_name": "tweenjs/tween.js",
"private": false
"private": false,
"stargazers_count": 8888,
"updated_at": "2022-11-02T06:57:57Z"
},
{
"id": 698041,
"name": "async",
"full_name": "caolan/async",
"private": false
"private": false,
"stargazers_count": 27723,
"updated_at": "2022-11-02T04:50:06Z"
},
{
"id": 712530,
"name": "fabric.js",
"full_name": "fabricjs/fabric.js",
"private": false
"private": false,
"stargazers_count": 23149,
"updated_at": "2022-11-02T09:45:43Z"
},
{
"id": 714074,
"name": "pouchdb",
"full_name": "pouchdb/pouchdb",
"private": false
"private": false,
"stargazers_count": 15318,
"updated_at": "2022-11-02T10:14:50Z"
},
{
"id": 715168,
"name": "colors.js",
"full_name": "Marak/colors.js",
"private": false
"private": false,
"stargazers_count": 5019,
"updated_at": "2022-11-02T05:17:19Z"
},
{
"id": 734934,
"name": "pug",
"full_name": "pugjs/pug",
"private": false
"private": false,
"stargazers_count": 20988,
"updated_at": "2022-11-02T06:43:03Z"
},
{
"id": 734957,
"name": "node-cron",
"full_name": "kelektiv/node-cron",
"private": false
"private": false,
"stargazers_count": 7598,
"updated_at": "2022-11-01T17:12:28Z"
},
{
"id": 743723,
"name": "store.js",
"full_name": "marcuswestin/store.js",
"private": false
"private": false,
"stargazers_count": 13844,
"updated_at": "2022-11-02T03:26:50Z"
},
{
"id": 747698,
"name": "sinon",
"full_name": "sinonjs/sinon",
"private": false
"private": false,
"stargazers_count": 9149,
"updated_at": "2022-11-02T09:18:57Z"
},
{
"id": 757363,
"name": "knockout",
"full_name": "knockout/knockout",
"private": false
"private": false,
"stargazers_count": 10247,
"updated_at": "2022-10-31T11:09:48Z"
},
{
"id": 779570,
"name": "forge",
"full_name": "digitalbazaar/forge",
"private": false
"private": false,
"stargazers_count": 4541,
"updated_at": "2022-11-02T06:45:45Z"
},
{
"id": 790359,
"name": "sequelize",
"full_name": "sequelize/sequelize",
"private": false
"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
"private": false,
"stargazers_count": 13042,
"updated_at": "2022-11-01T16:51:43Z"
},
{
"id": 800115,
"name": "underscore.string",
"full_name": "esamattis/underscore.string",
"private": false
"private": false,
"stargazers_count": 3374,
"updated_at": "2022-10-29T12:20:47Z"
},
{
"id": 805461,
"name": "mysql",
"full_name": "mysqljs/mysql",
"private": false
"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
"private": false,
"stargazers_count": 16837,
"updated_at": "2022-11-01T10:57:04Z"
},
{
"id": 887025,
"name": "q",
"full_name": "kriskowal/q",
"private": false
"private": false,
"stargazers_count": 14948,
"updated_at": "2022-10-28T07:31:40Z"
},
{
"id": 893522,
"name": "node-serialport",
"full_name": "serialport/node-serialport",
"private": false
"private": false,
"stargazers_count": 5320,
"updated_at": "2022-11-01T00:00:33Z"
},
{
"id": 908893,
"name": "node-redis",
"full_name": "redis/node-redis",
"private": false
"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
"private": false,
"stargazers_count": 7110,
"updated_at": "2022-10-28T06:39:48Z"
},
{
"id": 926231,
"name": "Inputmask",
"full_name": "RobinHerbots/Inputmask",
"private": false
"private": false,
"stargazers_count": 5987,
"updated_at": "2022-11-02T05:50:57Z"
},
{
"id": 931039,
"name": "browserify",
"full_name": "browserify/browserify",
"private": false
"private": false,
"stargazers_count": 14254,
"updated_at": "2022-11-01T03:37:09Z"
},
{
"id": 931135,
"name": "Leaflet",
"full_name": "Leaflet/Leaflet",
"private": false
"private": false,
"stargazers_count": 36010,
"updated_at": "2022-11-02T10:09:58Z"
},
{
"id": 942903,
"name": "forever",
"full_name": "foreversd/forever",
"private": false
"private": false,
"stargazers_count": 13663,
"updated_at": "2022-11-01T05:29:05Z"
},
{
"id": 943149,
"name": "d3",
"full_name": "d3/d3",
"private": false
"private": false,
"stargazers_count": 103304,
"updated_at": "2022-11-02T09:49:28Z"
},
{
"id": 947175,
"name": "json-schema",
"full_name": "kriszyp/json-schema",
"private": false
"private": false,
"stargazers_count": 499,
"updated_at": "2022-10-19T19:17:53Z"
},
{
"id": 952189,
"name": "backbone",
"full_name": "jashkenas/backbone",
"private": false
"private": false,
"stargazers_count": 27936,
"updated_at": "2022-11-02T03:16:33Z"
},
{
"id": 958314,
"name": "nodemon",
"full_name": "remy/nodemon",
"private": false
"private": false,
"stargazers_count": 24604,
"updated_at": "2022-11-02T10:11:39Z"
},
{
"id": 965782,
"name": "validator.js",
"full_name": "validatorjs/validator.js",
"private": false
"private": false,
"stargazers_count": 20415,
"updated_at": "2022-11-02T10:18:55Z"
},
{
"id": 991475,
"name": "node-postgres",
"full_name": "brianc/node-postgres",
"private": false
"private": false,
"stargazers_count": 10751,
"updated_at": "2022-10-31T12:20:17Z"
},
{
"id": 996158,
"name": "watch",
"full_name": "mikeal/watch",
"private": false
"private": false,
"stargazers_count": 1250,
"updated_at": "2022-11-01T17:14:59Z"
},
{
"id": 1025209,
"name": "CSSOM",
"full_name": "NV/CSSOM",
"private": false
"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
"private": false,
"stargazers_count": 5797,
"updated_at": "2022-11-02T07:54:31Z"
},
{
"id": 1186030,
"name": "node-qrcode",
"full_name": "soldair/node-qrcode",
"private": false
"private": false,
"stargazers_count": 6128,
"updated_at": "2022-11-02T05:16:11Z"
},
{
"id": 1203139,
"name": "uuid",
"full_name": "uuidjs/uuid",
"private": false
"private": false,
"stargazers_count": 12769,
"updated_at": "2022-11-02T10:25:19Z"
},
{
"id": 1204214,
"name": "stylus",
"full_name": "stylus/stylus",
"private": false
"private": false,
"stargazers_count": 10980,
"updated_at": "2022-11-02T10:57:58Z"
},
{
"id": 1206546,
"name": "winston",
"full_name": "winstonjs/winston",
"private": false
"private": false,
"stargazers_count": 19683,
"updated_at": "2022-11-02T09:13:43Z"
},
{
"id": 1213225,
"name": "highlight.js",
"full_name": "highlightjs/highlight.js",
"private": false
"private": false,
"stargazers_count": 20619,
"updated_at": "2022-11-02T10:05:24Z"
},
{
"id": 1218383,
"name": "cli-table",
"full_name": "Automattic/cli-table",
"private": false
"private": false,
"stargazers_count": 2206,
"updated_at": "2022-10-29T22:05:42Z"
},
{
"id": 1254497,
"name": "codemirror5",
"full_name": "codemirror/codemirror5",
"private": false
"private": false,
"stargazers_count": 25436,
"updated_at": "2022-11-02T07:14:55Z"
},
{
"id": 1272424,
"name": "nodemailer",
"full_name": "nodemailer/nodemailer",
"private": false
"private": false,
"stargazers_count": 15120,
"updated_at": "2022-11-02T07:16:15Z"
},
{
"id": 1272666,
"name": "jshint",
"full_name": "jshint/jshint",
"private": false
"private": false,
"stargazers_count": 8800,
"updated_at": "2022-11-02T02:43:46Z"
},
{
"id": 1283503,
"name": "request",
"full_name": "request/request",
"private": false
"private": false,
"stargazers_count": 25558,
"updated_at": "2022-11-02T07:14:37Z"
},
{
"id": 1295612,
"name": "flot",
"full_name": "flot/flot",
"private": false
"private": false,
"stargazers_count": 5954,
"updated_at": "2022-11-02T00:09:37Z"
},
{
"id": 1341324,
"name": "rimraf",
"full_name": "isaacs/rimraf",
"private": false
"private": false,
"stargazers_count": 4882,
"updated_at": "2022-11-01T02:30:44Z"
},
{
"id": 1357199,
"name": "node-semver",
"full_name": "npm/node-semver",
"private": false
"private": false,
"stargazers_count": 4417,
"updated_at": "2022-11-01T14:26:03Z"
},
{
"id": 1369824,
"name": "csso",
"full_name": "css/csso",
"private": false
"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
"private": false,
"stargazers_count": 3994,
"updated_at": "2022-10-31T19:00:55Z"
},
{
"id": 1424470,
"name": "moment",
"full_name": "moment/moment",
"private": false
"private": false,
"stargazers_count": 47014,
"updated_at": "2022-11-02T09:23:25Z"
},
{
"id": 1451352,
"name": "mocha",
"full_name": "mochajs/mocha",
"private": false
"private": false,
"stargazers_count": 21735,
"updated_at": "2022-11-02T05:54:18Z"
},
{
"id": 1474943,
"name": "node-dateformat",
"full_name": "felixge/node-dateformat",
"private": false
"private": false,
"stargazers_count": 1277,
"updated_at": "2022-10-23T15:41:37Z"
},
{
"id": 1534331,
"name": "node-tar",
"full_name": "npm/node-tar",
"private": false
"private": false,
"stargazers_count": 701,
"updated_at": "2022-10-31T18:54:48Z"
},
{
"id": 1542219,
"name": "jsdiff",
"full_name": "kpdecker/jsdiff",
"private": false
"private": false,
"stargazers_count": 6655,
"updated_at": "2022-11-02T00:34:01Z"
},
{
"id": 1544436,
"name": "nopt",
"full_name": "npm/nopt",
"private": false
"private": false,
"stargazers_count": 513,
"updated_at": "2022-10-30T02:25:47Z"
},
{
"id": 1545869,
"name": "when",
"full_name": "cujojs/when",
"private": false
"private": false,
"stargazers_count": 3446,
"updated_at": "2022-11-02T09:39:58Z"
},
{
"id": 1569980,
"name": "MQTT.js",
"full_name": "mqttjs/MQTT.js",
"private": false
"private": false,
"stargazers_count": 7315,
"updated_at": "2022-11-01T06:35:21Z"
},
{
"id": 1580001,
"name": "inherits",
"full_name": "isaacs/inherits",
"private": false
"private": false,
"stargazers_count": 345,
"updated_at": "2022-10-17T21:30:38Z"
},
{
"id": 1580851,
"name": "PhotoSwipe",
"full_name": "dimsemenov/PhotoSwipe",
"private": false
"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
"private": false,
"stargazers_count": 2775,
"updated_at": "2022-11-01T10:32:34Z"
},
{
"id": 1590986,
"name": "WebSocket-Node",
"full_name": "theturtle32/WebSocket-Node",
"private": false
"private": false,
"stargazers_count": 3597,
"updated_at": "2022-11-02T02:14:47Z"
}
]
},
"not_found_repo_nwos": {
"not_found_repos": {
"repository_count": 110,
"repository_full_names": [
"evanw/node-source-map-support",

View File

@@ -105,7 +105,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -116,7 +118,9 @@
"id": 105590837,
"name": "amplify-js",
"full_name": "aws-amplify/amplify-js",
"private": false
"private": false,
"stargazers_count": 8969,
"updated_at": "2022-11-02T09:55:27Z"
},
"analysis_status": "in_progress"
}

View File

@@ -105,7 +105,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -116,7 +118,9 @@
"id": 105590837,
"name": "amplify-js",
"full_name": "aws-amplify/amplify-js",
"private": false
"private": false,
"stargazers_count": 8969,
"updated_at": "2022-11-02T09:55:27Z"
},
"analysis_status": "in_progress"
}

View File

@@ -105,7 +105,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -116,7 +118,9 @@
"id": 105590837,
"name": "amplify-js",
"full_name": "aws-amplify/amplify-js",
"private": false
"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."

View File

@@ -106,7 +106,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "succeeded",
"artifact_size_in_bytes": 66895,
@@ -117,7 +119,9 @@
"id": 105590837,
"name": "amplify-js",
"full_name": "aws-amplify/amplify-js",
"private": false
"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."

View File

@@ -105,7 +105,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "pending"
},
@@ -114,7 +116,9 @@
"id": 105590837,
"name": "amplify-js",
"full_name": "aws-amplify/amplify-js",
"private": false
"private": false,
"stargazers_count": 8969,
"updated_at": "2022-11-02T09:55:27Z"
},
"analysis_status": "pending"
}

View File

@@ -105,7 +105,9 @@
"id": 23418517,
"name": "hadoop",
"full_name": "apache/hadoop",
"private": false
"private": false,
"stargazers_count": 13030,
"updated_at": "2022-11-02T08:23:58Z"
},
"analysis_status": "pending"
},
@@ -114,7 +116,9 @@
"id": 105590837,
"name": "amplify-js",
"full_name": "aws-amplify/amplify-js",
"private": false
"private": false,
"stargazers_count": 8969,
"updated_at": "2022-11-02T09:55:27Z"
},
"analysis_status": "pending"
}

Some files were not shown because too many files have changed in this diff Show More