{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments/66643382","id":66643382,"diff_hunk":"@@ -0,0 +1,1083 @@\n+import * as cp from \"child_process\";\r\n+import * as path from \"path\";\r\n+import * as fs from \"fs\";\r\n+import * as originalGulp from \"gulp\";\r\n+import * as helpMaker from \"gulp-help\";\r\n+import * as runSequence from \"run-sequence\";\r\n+import * as concat from \"gulp-concat\";\r\n+declare global {\r\n+    // This is silly. We include Q because orchestrator (a part of gulp) depends on it, but its not included.\r\n+    // `del` further depends on `Promise` (and is also not included), so we just, patch the global scope's Promise to Q's\r\n+    type Promise<T> = Q.Promise<T>;\r\n+}\r\n+import * as del from \"del\";\r\n+import * as mkdirP from \"mkdirP\";\r\n+import * as minimist from \"minimist\";\r\n+import * as os from \"os\";\r\n+import * as Linter from \"tslint\";\r\n+const gulp = helpMaker(originalGulp);\r\n+import {runTestsInParallel} from \"./scripts/mocha-parallel\";\r\n+\r\n+const cmdLineOptions = minimist(process.argv.slice(2), {\r\n+    boolean: [\"debug\", \"light\", \"colors\", \"lint\", \"soft\"],\r\n+    string: [\"browser\", \"tests\", \"host\", \"reporter\", ],\r\n+    alias: {\r\n+        d: \"debug\",\r\n+        t: \"tests\",\r\n+        test: \"tests\",\r\n+        r: \"reporter\",\r\n+        color: \"colors\",\r\n+        f: \"files\",\r\n+        file: \"files\"\r\n+    },\r\n+    default: {\r\n+        soft: false,\r\n+        colors: process.env.colors || process.env.color || true,\r\n+        debug: process.env.debug || process.env.d,\r\n+        host: process.env.TYPESCRIPT_HOST || process.env.host || \"node\",\r\n+        browser: process.env.browser || process.env.b || \"IE\",\r\n+        tests: process.env.test || process.env.tests || process.env.t,\r\n+        light: process.env.light || false,\r\n+        port: process.env.port || process.env.p || \"8888\",\r\n+        reporter: process.env.reporter || process.env.r,\r\n+        lint: process.env.lint || true,\r\n+        files: process.env.f || process.env.file || process.env.files || \"\",\r\n+    }\r\n+});\r\n+\r\n+function disableAtTypes() {\r\n+    if (fs.existsSync(\"node_modules/@types\")) {\r\n+        fs.renameSync(\"node_modules/@types\", \"node_modules/@types_off\");\r\n+    }\r\n+}\r\n+\r\n+function enableAtTypes() {\r\n+    if (fs.existsSync(\"node_modules/@types_off\")) {\r\n+        fs.renameSync(\"node_modules/@types_off\", \"node_modules/@types\");\r\n+    }\r\n+}\r\n+\r\n+disableAtTypes();\r\n+process.on(\"exit\", enableAtTypes);\r\n+process.on(\"uncaughtException\", enableAtTypes);\r\n+\r\n+function exec(cmd: string, args: string[], complete: () => void = (() => {}), error: (e: any, status: number) => void = (() => {})) {\r\n+    console.log(`${cmd} ${args.join(\" \")}`);\r\n+    const ex = cp.spawn(cmd, args);\r\n+    ex.stdout.pipe(process.stdout);\r\n+    ex.stderr.pipe(process.stderr);\r\n+    ex.on(\"exit\", (code) => code === 0 ? complete() : error(/*e*/ undefined, code));\r\n+    ex.on(\"error\", error);\r\n+}\r\n+\r\n+\r\n+let useDebugMode = true;\r\n+let host = cmdLineOptions[\"host\"];\r\n+\r\n+// Constants\r\n+const compilerDirectory = \"src/compiler/\";\r\n+const servicesDirectory = \"src/services/\";\r\n+const serverDirectory = \"src/server/\";\r\n+const harnessDirectory = \"src/harness/\";\r\n+const libraryDirectory = \"src/lib/\";\r\n+const scriptsDirectory = \"scripts/\";\r\n+const unittestsDirectory = \"tests/cases/unittests/\";\r\n+const docDirectory = \"doc/\";\r\n+\r\n+const builtDirectory = \"built/\";\r\n+const builtLocalDirectory = \"built/local/\";\r\n+const LKGDirectory = \"lib/\";\r\n+\r\n+const copyright = \"CopyrightNotice.txt\";\r\n+\r\n+const compilerFilename = \"tsc.js\";\r\n+const LKGCompiler = path.join(LKGDirectory, compilerFilename);\r\n+const builtLocalCompiler = path.join(builtLocalDirectory, compilerFilename);\r\n+\r\n+// add node_modules to path so we don\"t need global modules, prefer the modules by adding them first\r\n+const nodeModulesPathPrefix = path.resolve(\"./node_modules/.bin/\");\r\n+const isWin = /^win/.test(process.platform);\r\n+const mocha = path.join(nodeModulesPathPrefix, \"mocha\") + (isWin ? \".cmd\" : \"\");\r\n+const browserify = path.join(nodeModulesPathPrefix, \"browserify\") + (isWin ? \".cmd\" : \"\");\r\n+\r\n+const compilerSources = [\r\n+    \"core.ts\",\r\n+    \"sys.ts\",\r\n+    \"types.ts\",\r\n+    \"scanner.ts\",\r\n+    \"parser.ts\",\r\n+    \"utilities.ts\",\r\n+    \"binder.ts\",\r\n+    \"checker.ts\",\r\n+    \"sourcemap.ts\",\r\n+    \"declarationEmitter.ts\",\r\n+    \"emitter.ts\",\r\n+    \"program.ts\",\r\n+    \"commandLineParser.ts\",\r\n+    \"tsc.ts\",\r\n+    \"diagnosticInformationMap.generated.ts\"\r\n+].map(function (f) {\r\n+    return path.join(compilerDirectory, f);\r\n+});\r\n+\r\n+const servicesSources = [\r\n+    \"core.ts\",\r\n+    \"sys.ts\",\r\n+    \"types.ts\",\r\n+    \"scanner.ts\",\r\n+    \"parser.ts\",\r\n+    \"utilities.ts\",\r\n+    \"binder.ts\",\r\n+    \"checker.ts\",\r\n+    \"sourcemap.ts\",\r\n+    \"declarationEmitter.ts\",\r\n+    \"emitter.ts\",\r\n+    \"program.ts\",\r\n+    \"commandLineParser.ts\",\r\n+    \"diagnosticInformationMap.generated.ts\"\r\n+].map(function (f) {\r\n+    return path.join(compilerDirectory, f);\r\n+}).concat([\r\n+    \"breakpoints.ts\",\r\n+    \"navigateTo.ts\",\r\n+    \"navigationBar.ts\",\r\n+    \"outliningElementsCollector.ts\",\r\n+    \"patternMatcher.ts\",\r\n+    \"services.ts\",\r\n+    \"shims.ts\",\r\n+    \"signatureHelp.ts\",\r\n+    \"utilities.ts\",\r\n+    \"formatting/formatting.ts\",\r\n+    \"formatting/formattingContext.ts\",\r\n+    \"formatting/formattingRequestKind.ts\",\r\n+    \"formatting/formattingScanner.ts\",\r\n+    \"formatting/references.ts\",\r\n+    \"formatting/rule.ts\",\r\n+    \"formatting/ruleAction.ts\",\r\n+    \"formatting/ruleDescriptor.ts\",\r\n+    \"formatting/ruleFlag.ts\",\r\n+    \"formatting/ruleOperation.ts\",\r\n+    \"formatting/ruleOperationContext.ts\",\r\n+    \"formatting/rules.ts\",\r\n+    \"formatting/rulesMap.ts\",\r\n+    \"formatting/rulesProvider.ts\",\r\n+    \"formatting/smartIndenter.ts\",\r\n+    \"formatting/tokenRange.ts\"\r\n+].map(function (f) {\r\n+    return path.join(servicesDirectory, f);\r\n+}));\r\n+\r\n+const serverCoreSources = [\r\n+    \"node.d.ts\",\r\n+    \"editorServices.ts\",\r\n+    \"protocol.d.ts\",\r\n+    \"session.ts\",\r\n+    \"server.ts\"\r\n+].map(function (f) {\r\n+    return path.join(serverDirectory, f);\r\n+});\r\n+\r\n+const serverSources = serverCoreSources.concat(servicesSources);\r\n+\r\n+const languageServiceLibrarySources = [\r\n+    \"editorServices.ts\",\r\n+    \"protocol.d.ts\",\r\n+    \"session.ts\"\r\n+].map(function (f) {\r\n+    return path.join(serverDirectory, f);\r\n+}).concat(servicesSources);\r\n+\r\n+const harnessCoreSources = [\r\n+    \"harness.ts\",\r\n+    \"sourceMapRecorder.ts\",\r\n+    \"harnessLanguageService.ts\",\r\n+    \"fourslash.ts\",\r\n+    \"runnerbase.ts\",\r\n+    \"compilerRunner.ts\",\r\n+    \"typeWriter.ts\",\r\n+    \"fourslashRunner.ts\",\r\n+    \"projectsRunner.ts\",\r\n+    \"loggedIO.ts\",\r\n+    \"rwcRunner.ts\",\r\n+    \"test262Runner.ts\",\r\n+    \"runner.ts\"\r\n+].map(function (f) {\r\n+    return path.join(harnessDirectory, f);\r\n+});\r\n+\r\n+const harnessSources = harnessCoreSources.concat([\r\n+    \"incrementalParser.ts\",\r\n+    \"jsDocParsing.ts\",\r\n+    \"services/colorization.ts\",\r\n+    \"services/documentRegistry.ts\",\r\n+    \"services/preProcessFile.ts\",\r\n+    \"services/patternMatcher.ts\",\r\n+    \"session.ts\",\r\n+    \"versionCache.ts\",\r\n+    \"convertToBase64.ts\",\r\n+    \"transpile.ts\",\r\n+    \"reuseProgramStructure.ts\",\r\n+    \"cachingInServerLSHost.ts\",\r\n+    \"moduleResolution.ts\",\r\n+    \"tsconfigParsing.ts\",\r\n+    \"commandLineParsing.ts\",\r\n+    \"convertCompilerOptionsFromJson.ts\",\r\n+    \"convertTypingOptionsFromJson.ts\",\r\n+    \"tsserverProjectSystem.ts\"\r\n+].map(function (f) {\r\n+    return path.join(unittestsDirectory, f);\r\n+})).concat([\r\n+    \"protocol.d.ts\",\r\n+    \"session.ts\",\r\n+    \"client.ts\",\r\n+    \"editorServices.ts\"\r\n+].map(function (f) {\r\n+    return path.join(serverDirectory, f);\r\n+}));\r\n+\r\n+const es2015LibrarySources = [\r\n+    \"es2015.core.d.ts\",\r\n+    \"es2015.collection.d.ts\",\r\n+    \"es2015.generator.d.ts\",\r\n+    \"es2015.iterable.d.ts\",\r\n+    \"es2015.promise.d.ts\",\r\n+    \"es2015.proxy.d.ts\",\r\n+    \"es2015.reflect.d.ts\",\r\n+    \"es2015.symbol.d.ts\",\r\n+    \"es2015.symbol.wellknown.d.ts\"\r\n+];\r\n+\r\n+const es2015LibrarySourceMap = es2015LibrarySources.map(function(source) {\r\n+   return  { target: \"lib.\" + source, sources: [\"header.d.ts\", source] };\r\n+});\r\n+\r\n+const es2016LibrarySource = [ \"es2016.array.include.d.ts\" ];\r\n+\r\n+const es2016LibrarySourceMap = es2016LibrarySource.map(function (source) {\r\n+    return { target: \"lib.\" + source, sources: [\"header.d.ts\", source] };\r\n+});\r\n+\r\n+const es2017LibrarySource = [\r\n+    \"es2017.object.d.ts\",\r\n+    \"es2017.sharedmemory.d.ts\"\r\n+];\r\n+\r\n+const es2017LibrarySourceMap = es2017LibrarySource.map(function (source) {\r\n+    return { target: \"lib.\" + source, sources: [\"header.d.ts\", source] };\r\n+});\r\n+\r\n+const hostsLibrarySources = [\"dom.generated.d.ts\", \"webworker.importscripts.d.ts\", \"scripthost.d.ts\"];\r\n+\r\n+const librarySourceMap = [\r\n+        // Host library\r\n+        { target: \"lib.dom.d.ts\", sources: [\"header.d.ts\", \"dom.generated.d.ts\"] },\r\n+        { target: \"lib.dom.iterable.d.ts\", sources: [\"header.d.ts\", \"dom.iterable.d.ts\"] },\r\n+        { target: \"lib.webworker.d.ts\", sources: [\"header.d.ts\", \"webworker.generated.d.ts\"] },\r\n+        { target: \"lib.scripthost.d.ts\", sources: [\"header.d.ts\", \"scripthost.d.ts\"] },\r\n+\r\n+        // JavaScript library\r\n+        { target: \"lib.es5.d.ts\", sources: [\"header.d.ts\", \"es5.d.ts\"] },\r\n+        { target: \"lib.es2015.d.ts\", sources: [\"header.d.ts\", \"es2015.d.ts\"] },\r\n+        { target: \"lib.es2016.d.ts\", sources: [\"header.d.ts\", \"es2016.d.ts\"] },\r\n+        { target: \"lib.es2017.d.ts\", sources: [\"header.d.ts\", \"es2017.d.ts\"] },\r\n+\r\n+        // JavaScript + all host library\r\n+        { target: \"lib.d.ts\", sources: [\"header.d.ts\", \"es5.d.ts\"].concat(hostsLibrarySources) },\r\n+        { target: \"lib.es6.d.ts\", sources: [\"header.d.ts\", \"es5.d.ts\"].concat(es2015LibrarySources, hostsLibrarySources, \"dom.iterable.d.ts\") }\r\n+].concat(es2015LibrarySourceMap, es2016LibrarySourceMap, es2017LibrarySourceMap);\r\n+\r\n+const libraryTargets = librarySourceMap.map(function (f) {\r\n+    return path.join(builtLocalDirectory, f.target);\r\n+});\r\n+\r\n+for (const i in libraryTargets) {\r\n+    const entry = librarySourceMap[i];\r\n+    const target = libraryTargets[i];\r\n+    const sources = [copyright].concat(entry.sources.map(function (s) {\r\n+        return path.join(libraryDirectory, s);\r\n+    }));\r\n+    gulp.task(target, false, [], function() {\r\n+        return gulp.src(sources).pipe(concat(target, {newLine: \"\"})).pipe(gulp.dest(\".\"));\r\n+    });\r\n+}\r\n+\r\n+const configureNightlyJs = path.join(scriptsDirectory, \"configureNightly.js\");\r\n+const configureNightlyTs = path.join(scriptsDirectory, \"configureNightly.ts\");\r\n+const packageJson = \"package.json\";\r\n+const programTs = path.join(compilerDirectory, \"program.ts\");\r\n+\r\n+\r\n+// Prepends the contents of prefixFile to destinationFile\r\n+function prependFile(prefixFile, destinationFile) {\r\n+    if (!fs.existsSync(prefixFile)) {\r\n+        throw new Error(prefixFile + \" does not exist!\");\r\n+    }\r\n+    if (!fs.existsSync(destinationFile)) {\r\n+        throw new Error(destinationFile + \" failed to be created!\");\r\n+    }\r\n+    const temp = \"temptemp\";\r\n+    fs.writeFileSync(temp, fs.readFileSync(prefixFile));\r\n+    fs.appendFileSync(temp, fs.readFileSync(destinationFile));\r\n+    fs.renameSync(temp, destinationFile);\r\n+}\r\n+\r\n+function needsUpdate(source: string | string[], dest: string | string[]): boolean {\r\n+    if (typeof source === \"string\" && typeof dest === \"string\") {\r","path":"Gulpfile.ts","position":325,"original_position":325,"commit_id":"2b1b58ba444337e0ec5b94b0609b1cf940b0615d","original_commit_id":"2b1b58ba444337e0ec5b94b0609b1cf940b0615d","user":{"login":"weswigham","id":2932786,"avatar_url":"https://avatars.githubusercontent.com/u/2932786?v=3","gravatar_id":"","url":"https://api.github.com/users/weswigham","html_url":"https://github.com/weswigham","followers_url":"https://api.github.com/users/weswigham/followers","following_url":"https://api.github.com/users/weswigham/following{/other_user}","gists_url":"https://api.github.com/users/weswigham/gists{/gist_id}","starred_url":"https://api.github.com/users/weswigham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weswigham/subscriptions","organizations_url":"https://api.github.com/users/weswigham/orgs","repos_url":"https://api.github.com/users/weswigham/repos","events_url":"https://api.github.com/users/weswigham/events{/privacy}","received_events_url":"https://api.github.com/users/weswigham/received_events","type":"User","site_admin":false},"body":"Originally I didn't want to write the functional utility functions... But now that its not super late at night I realize that I can literally just include them from somewhere, since this is just our build, or write them in another file, or even include them from compiler utils. So yeah, I agree.","created_at":"2016-06-10T16:35:46Z","updated_at":"2016-06-10T16:35:46Z","html_url":"https://github.com/Microsoft/TypeScript/pull/9068#discussion_r66643382","pull_request_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/9068","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments/66643382"},"html":{"href":"https://github.com/Microsoft/TypeScript/pull/9068#discussion_r66643382"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/9068"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/9068","id":73328651,"html_url":"https://github.com/Microsoft/TypeScript/pull/9068","diff_url":"https://github.com/Microsoft/TypeScript/pull/9068.diff","patch_url":"https://github.com/Microsoft/TypeScript/pull/9068.patch","issue_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/9068","number":9068,"state":"open","locked":false,"title":"Remove Jakefile.js, Add Gulpfile.ts","user":{"login":"weswigham","id":2932786,"avatar_url":"https://avatars.githubusercontent.com/u/2932786?v=3","gravatar_id":"","url":"https://api.github.com/users/weswigham","html_url":"https://github.com/weswigham","followers_url":"https://api.github.com/users/weswigham/followers","following_url":"https://api.github.com/users/weswigham/following{/other_user}","gists_url":"https://api.github.com/users/weswigham/gists{/gist_id}","starred_url":"https://api.github.com/users/weswigham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weswigham/subscriptions","organizations_url":"https://api.github.com/users/weswigham/orgs","repos_url":"https://api.github.com/users/weswigham/repos","events_url":"https://api.github.com/users/weswigham/events{/privacy}","received_events_url":"https://api.github.com/users/weswigham/received_events","type":"User","site_admin":false},"body":"Last fall I always said I'd probably get around to doing this at some point.\r\n\r\nI was frustrated earlier today by our Jake-based build, and I had always talked about how it'd be easier to work with as another task runner. So this evening I did just what I always said I would - I ported our Jakefile to a Gulpfile. Added bonus: It's now written in typescript! And there's a `gulp help` command!\r\n\r\nGulp is orders of magnitude more popular than Jake nowadays, and sees much more active use - external contributors are more likely to have existing experiences with gulp. Additionally, my casual tests show `gulp` completing our build almost 5 seconds faster than `jake` (it runs a bunch of tasks in parallel). We can also start moving parts of the build to in-memory streams for a bit more efficiency once this is done. \r\n\r\n@DanielRosenwasser @sandersn @yuit You guys should definitely take a look.\r\n\r\nKnown caveat: I've discovered a... problem? with our implementation of looking for types in `@types`. We have no simple way of separating the types we use for our devtools from that we use in our main build. (Which, in this cause, could cause `node.d.ts` conflicts.) I've worked around the issue by making the task runner rename the @types folder on start and name it back on quit or fail (since once the gulpfile is loaded we don't use it), but a hard kill with Ctrl-C can result in the on-end code not getting run and the @types folder keeping its temporary name. :(","created_at":"2016-06-10T06:50:25Z","updated_at":"2016-06-10T16:35:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"82893c2c8e0eb9c41f275db739a2bcf705a3b408","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/9068/commits","review_comments_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/9068/comments","review_comment_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/9068/comments","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript/statuses/2b1b58ba444337e0ec5b94b0609b1cf940b0615d","head":{"label":"weswigham:remove-jake","ref":"remove-jake","sha":"2b1b58ba444337e0ec5b94b0609b1cf940b0615d","user":{"login":"weswigham","id":2932786,"avatar_url":"https://avatars.githubusercontent.com/u/2932786?v=3","gravatar_id":"","url":"https://api.github.com/users/weswigham","html_url":"https://github.com/weswigham","followers_url":"https://api.github.com/users/weswigham/followers","following_url":"https://api.github.com/users/weswigham/following{/other_user}","gists_url":"https://api.github.com/users/weswigham/gists{/gist_id}","starred_url":"https://api.github.com/users/weswigham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weswigham/subscriptions","organizations_url":"https://api.github.com/users/weswigham/orgs","repos_url":"https://api.github.com/users/weswigham/repos","events_url":"https://api.github.com/users/weswigham/events{/privacy}","received_events_url":"https://api.github.com/users/weswigham/received_events","type":"User","site_admin":false},"repo":{"id":37160442,"name":"TypeScript","full_name":"weswigham/TypeScript","owner":{"login":"weswigham","id":2932786,"avatar_url":"https://avatars.githubusercontent.com/u/2932786?v=3","gravatar_id":"","url":"https://api.github.com/users/weswigham","html_url":"https://github.com/weswigham","followers_url":"https://api.github.com/users/weswigham/followers","following_url":"https://api.github.com/users/weswigham/following{/other_user}","gists_url":"https://api.github.com/users/weswigham/gists{/gist_id}","starred_url":"https://api.github.com/users/weswigham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weswigham/subscriptions","organizations_url":"https://api.github.com/users/weswigham/orgs","repos_url":"https://api.github.com/users/weswigham/repos","events_url":"https://api.github.com/users/weswigham/events{/privacy}","received_events_url":"https://api.github.com/users/weswigham/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/weswigham/TypeScript","description":"TypeScript is a superset of JavaScript that compiles to clean JavaScript output.","fork":true,"url":"https://api.github.com/repos/weswigham/TypeScript","forks_url":"https://api.github.com/repos/weswigham/TypeScript/forks","keys_url":"https://api.github.com/repos/weswigham/TypeScript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/weswigham/TypeScript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/weswigham/TypeScript/teams","hooks_url":"https://api.github.com/repos/weswigham/TypeScript/hooks","issue_events_url":"https://api.github.com/repos/weswigham/TypeScript/issues/events{/number}","events_url":"https://api.github.com/repos/weswigham/TypeScript/events","assignees_url":"https://api.github.com/repos/weswigham/TypeScript/assignees{/user}","branches_url":"https://api.github.com/repos/weswigham/TypeScript/branches{/branch}","tags_url":"https://api.github.com/repos/weswigham/TypeScript/tags","blobs_url":"https://api.github.com/repos/weswigham/TypeScript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/weswigham/TypeScript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/weswigham/TypeScript/git/refs{/sha}","trees_url":"https://api.github.com/repos/weswigham/TypeScript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/weswigham/TypeScript/statuses/{sha}","languages_url":"https://api.github.com/repos/weswigham/TypeScript/languages","stargazers_url":"https://api.github.com/repos/weswigham/TypeScript/stargazers","contributors_url":"https://api.github.com/repos/weswigham/TypeScript/contributors","subscribers_url":"https://api.github.com/repos/weswigham/TypeScript/subscribers","subscription_url":"https://api.github.com/repos/weswigham/TypeScript/subscription","commits_url":"https://api.github.com/repos/weswigham/TypeScript/commits{/sha}","git_commits_url":"https://api.github.com/repos/weswigham/TypeScript/git/commits{/sha}","comments_url":"https://api.github.com/repos/weswigham/TypeScript/comments{/number}","issue_comment_url":"https://api.github.com/repos/weswigham/TypeScript/issues/comments{/number}","contents_url":"https://api.github.com/repos/weswigham/TypeScript/contents/{+path}","compare_url":"https://api.github.com/repos/weswigham/TypeScript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/weswigham/TypeScript/merges","archive_url":"https://api.github.com/repos/weswigham/TypeScript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/weswigham/TypeScript/downloads","issues_url":"https://api.github.com/repos/weswigham/TypeScript/issues{/number}","pulls_url":"https://api.github.com/repos/weswigham/TypeScript/pulls{/number}","milestones_url":"https://api.github.com/repos/weswigham/TypeScript/milestones{/number}","notifications_url":"https://api.github.com/repos/weswigham/TypeScript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/weswigham/TypeScript/labels{/name}","releases_url":"https://api.github.com/repos/weswigham/TypeScript/releases{/id}","deployments_url":"https://api.github.com/repos/weswigham/TypeScript/deployments","created_at":"2015-06-09T21:48:48Z","updated_at":"2016-02-04T07:57:52Z","pushed_at":"2016-06-10T08:50:09Z","git_url":"git://github.com/weswigham/TypeScript.git","ssh_url":"git@github.com:weswigham/TypeScript.git","clone_url":"https://github.com/weswigham/TypeScript.git","svn_url":"https://github.com/weswigham/TypeScript","homepage":"http://www.typescriptlang.org","size":239362,"stargazers_count":0,"watchers_count":0,"language":"TypeScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"e6eb36ee7126915d508673223e6cc59be92ea608","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":20929025,"name":"TypeScript","full_name":"Microsoft/TypeScript","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/TypeScript","description":"TypeScript is a superset of JavaScript that compiles to clean JavaScript output.","fork":false,"url":"https://api.github.com/repos/Microsoft/TypeScript","forks_url":"https://api.github.com/repos/Microsoft/TypeScript/forks","keys_url":"https://api.github.com/repos/Microsoft/TypeScript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/TypeScript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/TypeScript/teams","hooks_url":"https://api.github.com/repos/Microsoft/TypeScript/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/TypeScript/events","assignees_url":"https://api.github.com/repos/Microsoft/TypeScript/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/TypeScript/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/TypeScript/tags","blobs_url":"https://api.github.com/repos/Microsoft/TypeScript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/TypeScript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/TypeScript/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/TypeScript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/TypeScript/languages","stargazers_url":"https://api.github.com/repos/Microsoft/TypeScript/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/TypeScript/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/TypeScript/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/TypeScript/subscription","commits_url":"https://api.github.com/repos/Microsoft/TypeScript/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/TypeScript/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/TypeScript/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/TypeScript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/TypeScript/merges","archive_url":"https://api.github.com/repos/Microsoft/TypeScript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/TypeScript/downloads","issues_url":"https://api.github.com/repos/Microsoft/TypeScript/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/TypeScript/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/TypeScript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/TypeScript/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/TypeScript/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/TypeScript/deployments","created_at":"2014-06-17T15:28:39Z","updated_at":"2016-06-10T16:08:52Z","pushed_at":"2016-06-10T16:16:29Z","git_url":"git://github.com/Microsoft/TypeScript.git","ssh_url":"git@github.com:Microsoft/TypeScript.git","clone_url":"https://github.com/Microsoft/TypeScript.git","svn_url":"https://github.com/Microsoft/TypeScript","homepage":"http://www.typescriptlang.org","size":512853,"stargazers_count":12169,"watchers_count":12169,"language":"TypeScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1593,"mirror_url":null,"open_issues_count":942,"forks":1593,"open_issues":942,"watchers":12169,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/9068"},"html":{"href":"https://github.com/Microsoft/TypeScript/pull/9068"},"issue":{"href":"https://api.github.com/repos/Microsoft/TypeScript/issues/9068"},"comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript/issues/9068/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/9068/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/9068/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/TypeScript/statuses/2b1b58ba444337e0ec5b94b0609b1cf940b0615d"}}}}
{"actor":{"display_login":"weswigham"}}