{"action":"created","comment":{"url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/comments/207348335","pull_request_review_id":142944748,"id":207348335,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNzM0ODMzNQ==","diff_hunk":"@@ -0,0 +1,666 @@\n+import * as vscode from 'vscode';\n+import crypto = require('crypto');\n+import events = require('events');\n+import fs = require('fs');\n+import ospath = require('path');\n+import {\n+  CliCommandExecutor,\n+  Command\n+} from '@salesforce/salesforcedx-utils-vscode/out/src/cli';\n+import { ContinueResponse } from '@salesforce/salesforcedx-utils-vscode/out/src/types';\n+import { ApexTestRequestInfo, getApexTests, isLanguageClientReady } from '..';\n+import { nls } from '../messages';\n+\n+// Import from core\n+const sfdxCoreExports = vscode.extensions.getExtension(\n+  'salesforce.salesforcedx-vscode-core'\n+)!.exports;\n+const ProgressNotification = sfdxCoreExports.ProgressNotification;\n+const EmptyParametersGatherer = sfdxCoreExports.EmptyParametersGatherer;\n+const SfdxCommandlet = sfdxCoreExports.SfdxCommandlet;\n+const ForceApexTestRunCodeActionExecutor =\n+  sfdxCoreExports.ForceApexTestRunCodeActionExecutor;\n+const SfdxWorkspaceChecker = sfdxCoreExports.SfdxWorkspaceChecker;\n+const channelService = sfdxCoreExports.channelService;\n+const notificationService = sfdxCoreExports.notificationService;\n+const taskViewService = sfdxCoreExports.taskViewService;\n+\n+const LIGHT_BLUE_BUTTON = ospath.join(\n+  __filename,\n+  '..',\n+  '..',\n+  '..',\n+  '..',\n+  'resources',\n+  'light',\n+  'testNotRun.svg'\n+);\n+const LIGHT_RED_BUTTON = ospath.join(\n+  __filename,\n+  '..',\n+  '..',\n+  '..',\n+  '..',\n+  'resources',\n+  'light',\n+  'testFail.svg'\n+);\n+const LIGHT_GREEN_BUTTON = ospath.join(\n+  __filename,\n+  '..',\n+  '..',\n+  '..',\n+  '..',\n+  'resources',\n+  'light',\n+  'testPass.svg'\n+);\n+\n+const DARK_BLUE_BUTTON = ospath.join(\n+  __filename,\n+  '..',\n+  '..',\n+  '..',\n+  '..',\n+  'resources',\n+  'dark',\n+  'testNotRun.svg'\n+);\n+const DARK_RED_BUTTON = ospath.join(\n+  __filename,\n+  '..',\n+  '..',\n+  '..',\n+  '..',\n+  'resources',\n+  'dark',\n+  'testFail.svg'\n+);\n+const DARK_GREEN_BUTTON = ospath.join(\n+  __filename,\n+  '..',\n+  '..',\n+  '..',\n+  '..',\n+  'resources',\n+  'dark',\n+  'testPass.svg'\n+);\n+\n+export type FullTestResult = {\n+  summary: TestSummary;\n+  tests: TestResult[];\n+};\n+\n+export type TestSummary = {\n+  outcome: string;\n+  testsRan: number;\n+  passing: number;\n+  failing: number;\n+  skipped: number;\n+  passRate: string;\n+  failRate: string;\n+  testStartTime: string;\n+  testExecutionTime: string;\n+  testTotalTime: string;\n+  commandTime: string;\n+  hostname: string;\n+  orgId: string;\n+  username: string;\n+  testRunId: string;\n+  userId: string;\n+};\n+\n+export type TestResult = {\n+  ApexClass: ApexClass;\n+  MethodName: string;\n+  Outcome: string;\n+  RunTime: number;\n+  Message: string;\n+  StackTrace: string;\n+  FullName: string;\n+};\n+\n+export type ApexClass = {\n+  attributes: { type: string };\n+  Id: string;\n+  Name: string;\n+  NamespacPrefix: string;\n+};\n+\n+export type ApexGroupInfo = {\n+  outcome: string;\n+  summary: TestSummary;\n+};\n+\n+export class ApexTestOutlineProvider implements vscode.TreeDataProvider<Test> {\n+  private _onDidChangeTreeData: vscode.EventEmitter<\n+    Test | undefined\n+  > = new vscode.EventEmitter<Test | undefined>();\n+  public readonly onDidChangeTreeData: vscode.Event<Test | undefined> = this\n+    ._onDidChangeTreeData.event;\n+\n+  private eventsEmitter = new events.EventEmitter();\n+\n+  private apexTestMap: Map<string, Test> = new Map<string, Test>();\n+  private head: Test | null;\n+  private static testStrings: Set<string> = new Set<string>();\n+\n+  constructor(\n+    private path: string,\n+    private apexClasses: vscode.Uri[],\n+    private apexTestInfo: ApexTestRequestInfo[] | null\n+  ) {\n+    this.head = null;\n+    this.getAllApexTests(this.path);\n+    // Now, activate events that we need\n+    this.eventsEmitter.on('Delete Folder', this.deleteFolderRecursive); // Activate event to delete folder\n+    this.eventsEmitter.on('Show Highlight', this.updateSelection);\n+  }\n+\n+  public getHead(): Test {\n+    if (this.head === null) {\n+      return this.getAllApexTests(this.path);\n+    }\n+    return this.head;\n+  }\n+\n+  public getChildren(element: Test): Thenable<Test[]> {\n+    if (element) {\n+      return Promise.resolve(element.children);\n+    } else {\n+      if (this.head && this.head.children.length > 0) {\n+        return Promise.resolve(this.head.children);\n+      } else {\n+        const emptyArray = new Array<ApexTest>();\n+        emptyArray.push(new ApexTest('No tests in folder', null, 0));\n+        return Promise.resolve(emptyArray);\n+      }\n+    }\n+  }\n+\n+  public getTreeItem(element: Test): vscode.TreeItem {\n+    if (element) {\n+      return element;\n+    } else {\n+      this.getAllApexTests(this.path);\n+      if (!(this.head && this.head.children.length > 0)) {\n+        this.head = new ApexTest('No tests in folder', null, 0);\n+        this.head.children.push(new ApexTest('No tests in folder', null, 0));\n+      }\n+      return this.head;\n+    }\n+  }\n+\n+  public async refresh() {\n+    this.head = null; // Reset tests\n+    this.apexTestMap.clear();\n+    ApexTestOutlineProvider.testStrings.clear();\n+    this.apexTestInfo = null;\n+    if (isLanguageClientReady()) {\n+      this.apexTestInfo = (await getApexTests()) as ApexTestRequestInfo[];\n+    }\n+    this.apexClasses = await vscode.workspace.findFiles('**/*.cls');\n+    this.getAllApexTests(this.path);\n+    this._onDidChangeTreeData.fire();\n+  }\n+\n+  private getAllApexTests(path: string): Test {\n+    if (this.head == null) {\n+      // Starting Out\n+      this.head = new ApexTestGroup('ApexTests', null, 1);\n+    }\n+    // Check if lsp worked, else parse files manually\n+    if (this.apexTestInfo) {\n+      // Do it the easy way\n+      this.apexTestInfo.forEach(test => {\n+        let apexGroup = this.apexTestMap.get(test.parent) as ApexTestGroup;\n+        if (!apexGroup) {\n+          apexGroup = new ApexTestGroup(test.parent, null, 1);\n+          this.apexTestMap.set(test.parent, apexGroup);\n+        }\n+        const testUri = vscode.Uri.file(test.file.substring(7));\n+        const apexTest = new ApexTest(test.methodName, testUri, test.line);\n+        apexTest.name = apexGroup.label + '.' + apexTest.label;\n+        this.apexTestMap.set(apexTest.name, apexTest);\n+        apexGroup.children.push(apexTest);\n+        if (this.head && !(this.head.children.indexOf(apexGroup) >= 0)) {\n+          this.head.children.push(apexGroup);\n+        }\n+        ApexTestOutlineProvider.testStrings.add(apexGroup.name);\n+      });\n+    } else {\n+      this.apexClasses.forEach(apexClass => {\n+        const fileContent = fs.readFileSync(apexClass.fsPath).toString();\n+        if (fileContent && fileContent.toLowerCase().includes('@istest')) {\n+          const testName = ospath\n+            .basename(apexClass.toString())\n+            .replace('.cls', '');\n+          const newApexTestGroup = new ApexTestGroup(testName, apexClass, 1);\n+          this.apexTestMap.set(testName, newApexTestGroup);\n+          this.addTests(fileContent, newApexTestGroup);\n+          ApexTestOutlineProvider.testStrings.add(testName);\n+          if (this.head) {\n+            this.head.children.push(newApexTestGroup);\n+          }\n+        }\n+      });\n+    }\n+    return this.head;\n+  }\n+\n+  private addTests(fileContent: string, apexTestGroup: ApexTestGroup): void {\n+    // Parse through file and find apex tests\n+    const regEx = /(@[iI][sS][tT][eE][sS][tT])+/g;\n+    let match = regEx.exec(fileContent);\n+    while (match) {\n+      const ind = match.index;\n+      // Ignore class heading\n+      if (ind !== 0) {\n+        // A test\n+        const restOfFile = fileContent.slice(match.index);\n+        const header = restOfFile.slice(0, restOfFile.indexOf('{'));\n+        const headerParts = header.split(' ');\n+\n+        // Name is last part of the header, not always the last item though, because could be an empty string ''\n+        let name = '';\n+        while (name === '') {\n+          const headerPart = headerParts.pop();\n+          if (headerPart && headerPart.includes(')')) {\n+            name = headerPart;\n+          }\n+        }\n+        name = name.replace('()', ''); // Get rid\n+        const apexTest = new ApexTest(name, apexTestGroup.file, ind);\n+        apexTest.name = apexTestGroup.label + '.' + name;\n+        this.apexTestMap.set(apexTest.name, apexTest);\n+        apexTestGroup.children.push(apexTest);\n+      }\n+      match = regEx.exec(fileContent);\n+    }\n+  }\n+\n+  private deleteFolderRecursive(path: string) {","path":"packages/salesforcedx-vscode-apex/src/views/testOutline.ts","position":283,"original_position":283,"commit_id":"ce471ba9f5a35ab5953f1060c9378bf132355910","original_commit_id":"ce471ba9f5a35ab5953f1060c9378bf132355910","user":{"login":"vazexqi","id":54414,"node_id":"MDQ6VXNlcjU0NDE0","avatar_url":"https://avatars1.githubusercontent.com/u/54414?v=4","gravatar_id":"","url":"https://api.github.com/users/vazexqi","html_url":"https://github.com/vazexqi","followers_url":"https://api.github.com/users/vazexqi/followers","following_url":"https://api.github.com/users/vazexqi/following{/other_user}","gists_url":"https://api.github.com/users/vazexqi/gists{/gist_id}","starred_url":"https://api.github.com/users/vazexqi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vazexqi/subscriptions","organizations_url":"https://api.github.com/users/vazexqi/orgs","repos_url":"https://api.github.com/users/vazexqi/repos","events_url":"https://api.github.com/users/vazexqi/events{/privacy}","received_events_url":"https://api.github.com/users/vazexqi/received_events","type":"User","site_admin":false},"body":"\"I want to later allow any invocation of these tests to update the test view (such as the code lens button).\" <-- this is a good point. Does the code lens button fire off any events now that the test view can list for?","created_at":"2018-08-02T19:37:33Z","updated_at":"2018-08-02T19:37:33Z","html_url":"https://github.com/forcedotcom/salesforcedx-vscode/pull/542#discussion_r207348335","pull_request_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/542","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/comments/207348335"},"html":{"href":"https://github.com/forcedotcom/salesforcedx-vscode/pull/542#discussion_r207348335"},"pull_request":{"href":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/542"}},"in_reply_to_id":206967830},"pull_request":{"url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/542","id":205491514,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA1NDkxNTE0","html_url":"https://github.com/forcedotcom/salesforcedx-vscode/pull/542","diff_url":"https://github.com/forcedotcom/salesforcedx-vscode/pull/542.diff","patch_url":"https://github.com/forcedotcom/salesforcedx-vscode/pull/542.patch","issue_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/issues/542","number":542,"state":"open","locked":false,"title":"Adding Testing Sidebar for ApexClasses","user":{"login":"jkalloor0701","id":39964061,"node_id":"MDQ6VXNlcjM5OTY0MDYx","avatar_url":"https://avatars2.githubusercontent.com/u/39964061?v=4","gravatar_id":"","url":"https://api.github.com/users/jkalloor0701","html_url":"https://github.com/jkalloor0701","followers_url":"https://api.github.com/users/jkalloor0701/followers","following_url":"https://api.github.com/users/jkalloor0701/following{/other_user}","gists_url":"https://api.github.com/users/jkalloor0701/gists{/gist_id}","starred_url":"https://api.github.com/users/jkalloor0701/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkalloor0701/subscriptions","organizations_url":"https://api.github.com/users/jkalloor0701/orgs","repos_url":"https://api.github.com/users/jkalloor0701/repos","events_url":"https://api.github.com/users/jkalloor0701/events{/privacy}","received_events_url":"https://api.github.com/users/jkalloor0701/received_events","type":"User","site_admin":false},"body":"### What does this PR do?\r\nThis PR adds a sidebar that allows you to view, run, and interact with apex tests in your project.\r\n### What issues does this PR fix or reference?\r\nPR fixes the lack of visibility in terms of running tests and viewing their errors.\r\n","created_at":"2018-08-01T17:03:24Z","updated_at":"2018-08-02T19:37:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e1a8e791f9128d65d4df49845901651fd11aa8b5","assignee":null,"assignees":[],"requested_reviewers":[{"login":"cwallsfdc","id":1133927,"node_id":"MDQ6VXNlcjExMzM5Mjc=","avatar_url":"https://avatars3.githubusercontent.com/u/1133927?v=4","gravatar_id":"","url":"https://api.github.com/users/cwallsfdc","html_url":"https://github.com/cwallsfdc","followers_url":"https://api.github.com/users/cwallsfdc/followers","following_url":"https://api.github.com/users/cwallsfdc/following{/other_user}","gists_url":"https://api.github.com/users/cwallsfdc/gists{/gist_id}","starred_url":"https://api.github.com/users/cwallsfdc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cwallsfdc/subscriptions","organizations_url":"https://api.github.com/users/cwallsfdc/orgs","repos_url":"https://api.github.com/users/cwallsfdc/repos","events_url":"https://api.github.com/users/cwallsfdc/events{/privacy}","received_events_url":"https://api.github.com/users/cwallsfdc/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":888973214,"node_id":"MDU6TGFiZWw4ODg5NzMyMTQ=","url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/labels/cla:missing","name":"cla:missing","color":"c40d0d","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/542/commits","review_comments_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/542/comments","review_comment_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/comments{/number}","comments_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/issues/542/comments","statuses_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/statuses/ce471ba9f5a35ab5953f1060c9378bf132355910","head":{"label":"jkalloor0701:develop","ref":"develop","sha":"ce471ba9f5a35ab5953f1060c9378bf132355910","user":{"login":"jkalloor0701","id":39964061,"node_id":"MDQ6VXNlcjM5OTY0MDYx","avatar_url":"https://avatars2.githubusercontent.com/u/39964061?v=4","gravatar_id":"","url":"https://api.github.com/users/jkalloor0701","html_url":"https://github.com/jkalloor0701","followers_url":"https://api.github.com/users/jkalloor0701/followers","following_url":"https://api.github.com/users/jkalloor0701/following{/other_user}","gists_url":"https://api.github.com/users/jkalloor0701/gists{/gist_id}","starred_url":"https://api.github.com/users/jkalloor0701/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkalloor0701/subscriptions","organizations_url":"https://api.github.com/users/jkalloor0701/orgs","repos_url":"https://api.github.com/users/jkalloor0701/repos","events_url":"https://api.github.com/users/jkalloor0701/events{/privacy}","received_events_url":"https://api.github.com/users/jkalloor0701/received_events","type":"User","site_admin":false},"repo":{"id":141159718,"node_id":"MDEwOlJlcG9zaXRvcnkxNDExNTk3MTg=","name":"salesforcedx-vscode","full_name":"jkalloor0701/salesforcedx-vscode","owner":{"login":"jkalloor0701","id":39964061,"node_id":"MDQ6VXNlcjM5OTY0MDYx","avatar_url":"https://avatars2.githubusercontent.com/u/39964061?v=4","gravatar_id":"","url":"https://api.github.com/users/jkalloor0701","html_url":"https://github.com/jkalloor0701","followers_url":"https://api.github.com/users/jkalloor0701/followers","following_url":"https://api.github.com/users/jkalloor0701/following{/other_user}","gists_url":"https://api.github.com/users/jkalloor0701/gists{/gist_id}","starred_url":"https://api.github.com/users/jkalloor0701/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkalloor0701/subscriptions","organizations_url":"https://api.github.com/users/jkalloor0701/orgs","repos_url":"https://api.github.com/users/jkalloor0701/repos","events_url":"https://api.github.com/users/jkalloor0701/events{/privacy}","received_events_url":"https://api.github.com/users/jkalloor0701/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jkalloor0701/salesforcedx-vscode","description":"Salesforce Extensions for VS Code","fork":true,"url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode","forks_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/forks","keys_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/teams","hooks_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/hooks","issue_events_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/issues/events{/number}","events_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/events","assignees_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/assignees{/user}","branches_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/branches{/branch}","tags_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/tags","blobs_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/git/refs{/sha}","trees_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/statuses/{sha}","languages_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/languages","stargazers_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/stargazers","contributors_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/contributors","subscribers_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/subscribers","subscription_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/subscription","commits_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/commits{/sha}","git_commits_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/git/commits{/sha}","comments_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/comments{/number}","issue_comment_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/issues/comments{/number}","contents_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/contents/{+path}","compare_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/merges","archive_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/downloads","issues_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/issues{/number}","pulls_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/pulls{/number}","milestones_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/milestones{/number}","notifications_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/labels{/name}","releases_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/releases{/id}","deployments_url":"https://api.github.com/repos/jkalloor0701/salesforcedx-vscode/deployments","created_at":"2018-07-16T15:44:03Z","updated_at":"2018-08-01T16:59:44Z","pushed_at":"2018-08-02T17:38:08Z","git_url":"git://github.com/jkalloor0701/salesforcedx-vscode.git","ssh_url":"git@github.com:jkalloor0701/salesforcedx-vscode.git","clone_url":"https://github.com/jkalloor0701/salesforcedx-vscode.git","svn_url":"https://github.com/jkalloor0701/salesforcedx-vscode","homepage":"","size":104026,"stargazers_count":0,"watchers_count":0,"language":"TypeScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"forcedotcom:develop","ref":"develop","sha":"7832b8eed5a08b836432065f9e655a11f49b3ace","user":{"login":"forcedotcom","id":464563,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ2NDU2Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/464563?v=4","gravatar_id":"","url":"https://api.github.com/users/forcedotcom","html_url":"https://github.com/forcedotcom","followers_url":"https://api.github.com/users/forcedotcom/followers","following_url":"https://api.github.com/users/forcedotcom/following{/other_user}","gists_url":"https://api.github.com/users/forcedotcom/gists{/gist_id}","starred_url":"https://api.github.com/users/forcedotcom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/forcedotcom/subscriptions","organizations_url":"https://api.github.com/users/forcedotcom/orgs","repos_url":"https://api.github.com/users/forcedotcom/repos","events_url":"https://api.github.com/users/forcedotcom/events{/privacy}","received_events_url":"https://api.github.com/users/forcedotcom/received_events","type":"Organization","site_admin":false},"repo":{"id":95021029,"node_id":"MDEwOlJlcG9zaXRvcnk5NTAyMTAyOQ==","name":"salesforcedx-vscode","full_name":"forcedotcom/salesforcedx-vscode","owner":{"login":"forcedotcom","id":464563,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ2NDU2Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/464563?v=4","gravatar_id":"","url":"https://api.github.com/users/forcedotcom","html_url":"https://github.com/forcedotcom","followers_url":"https://api.github.com/users/forcedotcom/followers","following_url":"https://api.github.com/users/forcedotcom/following{/other_user}","gists_url":"https://api.github.com/users/forcedotcom/gists{/gist_id}","starred_url":"https://api.github.com/users/forcedotcom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/forcedotcom/subscriptions","organizations_url":"https://api.github.com/users/forcedotcom/orgs","repos_url":"https://api.github.com/users/forcedotcom/repos","events_url":"https://api.github.com/users/forcedotcom/events{/privacy}","received_events_url":"https://api.github.com/users/forcedotcom/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/forcedotcom/salesforcedx-vscode","description":"Salesforce Extensions for VS Code","fork":false,"url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode","forks_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/forks","keys_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/keys{/key_id}","collaborators_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/teams","hooks_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/hooks","issue_events_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/issues/events{/number}","events_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/events","assignees_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/assignees{/user}","branches_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/branches{/branch}","tags_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/tags","blobs_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/git/refs{/sha}","trees_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/git/trees{/sha}","statuses_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/statuses/{sha}","languages_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/languages","stargazers_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/stargazers","contributors_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/contributors","subscribers_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/subscribers","subscription_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/subscription","commits_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/commits{/sha}","git_commits_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/git/commits{/sha}","comments_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/comments{/number}","issue_comment_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/issues/comments{/number}","contents_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/contents/{+path}","compare_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/compare/{base}...{head}","merges_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/merges","archive_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/downloads","issues_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/issues{/number}","pulls_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls{/number}","milestones_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/milestones{/number}","notifications_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/labels{/name}","releases_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/releases{/id}","deployments_url":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/deployments","created_at":"2017-06-21T15:53:45Z","updated_at":"2018-08-02T15:39:54Z","pushed_at":"2018-08-02T15:39:51Z","git_url":"git://github.com/forcedotcom/salesforcedx-vscode.git","ssh_url":"git@github.com:forcedotcom/salesforcedx-vscode.git","clone_url":"https://github.com/forcedotcom/salesforcedx-vscode.git","svn_url":"https://github.com/forcedotcom/salesforcedx-vscode","homepage":"","size":101061,"stargazers_count":167,"watchers_count":167,"language":"TypeScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":34,"mirror_url":null,"archived":false,"open_issues_count":37,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":34,"open_issues":37,"watchers":167,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/542"},"html":{"href":"https://github.com/forcedotcom/salesforcedx-vscode/pull/542"},"issue":{"href":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/issues/542"},"comments":{"href":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/issues/542/comments"},"review_comments":{"href":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/542/comments"},"review_comment":{"href":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/pulls/542/commits"},"statuses":{"href":"https://api.github.com/repos/forcedotcom/salesforcedx-vscode/statuses/ce471ba9f5a35ab5953f1060c9378bf132355910"}},"author_association":"NONE"}}
{"actor":{"display_login":"vazexqi"}}