{"id":13496549,"url":"https://github.com/DefinitelyTyped/tsd","last_synced_at":"2025-03-28T19:30:37.369Z","repository":{"id":5121249,"uuid":"6286026","full_name":"DefinitelyTyped/tsd","owner":"DefinitelyTyped","description":"[DEPRECATED] TypeScript Definition manager for DefinitelyTyped","archived":true,"fork":false,"pushed_at":"2018-11-01T23:37:09.000Z","size":7559,"stargazers_count":1118,"open_issues_count":81,"forks_count":136,"subscribers_count":52,"default_branch":"master","last_synced_at":"2024-04-25T21:05:30.314Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"github/markup","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DefinitelyTyped.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-10-18T21:54:13.000Z","updated_at":"2024-04-19T20:34:02.000Z","dependencies_parsed_at":"2022-08-31T20:02:26.201Z","dependency_job_id":null,"html_url":"https://github.com/DefinitelyTyped/tsd","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2Ftsd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2Ftsd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2Ftsd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2Ftsd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DefinitelyTyped","download_url":"https://codeload.github.com/DefinitelyTyped/tsd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246088317,"owners_count":20721660,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T19:01:51.400Z","updated_at":"2025-03-28T19:30:36.489Z","avatar_url":"https://github.com/DefinitelyTyped.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# TSD\n\n[![Build Status](https://travis-ci.org/DefinitelyTyped/tsd.svg?branch=master)](https://travis-ci.org/DefinitelyTyped/tsd) [![Build status](https://ci.appveyor.com/api/projects/status/v4w7p3qvcuxhte33/branch/master?svg=true)](https://ci.appveyor.com/project/Diullei/tsd/branch/master) [![NPM version](https://badge.fury.io/js/tsd.svg)](http://badge.fury.io/js/tsd) [![Dependency Status](https://david-dm.org/DefinitelyTyped/tsd.svg)](https://david-dm.org/DefinitelyTyped/tsd) [![devDependency Status](https://david-dm.org/DefinitelyTyped/tsd/dev-status.svg)](https://david-dm.org/DefinitelyTyped/tsd#info=devDependencies)\n\n\u003e TypeScript Definition manager for DefinitelyTyped\n\nTSD is a package manager to search and install [TypeScript](http://www.typescriptlang.org/) definition files directly from the community driven [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped) repository.\n\n**DEPRECATED: TSD is deprecated, please use [Typings](http://github.com/typings/typings) and see [this issue](https://github.com/DefinitelyTyped/tsd/issues/269) for more information.**\n\n[![No Maintenance Intended](http://unmaintained.tech/badge.svg)](http://unmaintained.tech/)\n\n## Install\n\nInstall global using [node](http://nodejs.org/) using [npm](https://npmjs.org/).:\n\n````bash\nnpm install tsd -g\n````\n\nFor previews and history check the [release tags](https://github.com/DefinitelyTyped/tsd/releases).\n\n## Commands\n\n### Quick start\n\n````bash\n$ tsd install jquery --save\n\n$ tsd query angular -ir\n$ tsd query angularjs/\n\n$ tsd query jquery.*\n# glob on mac/linux\n$ tsd query \"jquery.*\"\n\n#install all definitions from tsd.json\n$ tsd install\n````\n\n### Commands\n\nGlobal `tsd` binary with help.\n\n````bash\n$ tsd\n$ tsd -h\n$ tsd --help\n$ tsd --version\n````\n\n[![$ tsd -h](https://raw.github.com/DefinitelyTyped/tsd/master/media/capture/help-small.png)](https://raw.github.com/DefinitelyTyped/tsd/master/media/capture/help.png)\n\nSometimes it looks like this:\n\n* [`$ tsd --help`](https://raw.github.com/DefinitelyTyped/tsd/master/media/capture/help.png)\n* [`$ tsd query async --info --history --action install`](https://raw.github.com/DefinitelyTyped/tsd/master/media/capture/async.png)\n* [`$ tsd query angular* --resolve`](https://raw.github.com/DefinitelyTyped/tsd/master/media/capture/angular.png)\n\n\n### Init\n\nCreate a new `tsd.json` and `tsd.d.ts`. This is not required but useful to init valid project references before starting to add (external) code, or if you want to edit the config.\n\n````bash\n$ tsd init\n````\n\n\n#### Search\n\nMinimal query for `d3`:\n\n````bash\n$ tsd query d3\n````\n\nGet some info about `jquery`:\n\n````bash\n$ tsd query jquery --info --resolve\n$ tsd query jquery -i -r\n$ tsd query jquery -ir\n````\n\nSearch for `jquery` plugins:\n\n````bash\n$ tsd query */jquery.*\n````\n\nHint: if you are using Linux or Mac OS X, use quotes to glob:\n\n````bash\n$ tsd query \"*/jquery.*\"\n````\n\nView `mocha` history:\n\n````bash\n$ tsd query mocha --history\n$ tsd query mocha -y\n````\n\nList *everything*:\n\n````bash\n$ tsd query *\n````\n\nNote: more info on queries can be found futher-on in this readme.\n\n#### Open a browser\n\nBrowse `pixi` definition on github:\n\n````bash\n$ tsd query pixi --action browse\n$ tsd query pixi -a browse\n````\n\nVisit `gruntjs` homepage:\n\n````bash\n$ tsd query gruntjs --action visit\n$ tsd query gruntjs -a visit\n````\n\n#### Install to project\n\nInstall `mocha`:\n\n````bash\n$ tsd install mocha\n````\n\nInstall `mocha` and save to `tsd.json`:\n\n````bash\n$ tsd install mocha --save\n$ tsd install mocha -s\n````\n\nSame as query action:\n````bash\n$ tsd query mocha --save --action install\n$ tsd query mocha -sa install\n````\n\n\nResolve the reference to `jquery`, overwrite existing files and save to `tsd.json`:\n\n````bash\n$ tsd install angular --resolve --overwrite --save\n$ tsd install angular -r -o -s\n$ tsd install angular -ros\n````\n\nSame as query action:\n````bash\n$ tsd query angular --resolve --overwrite --save --action install\n````\n\nInstall `mocha`, `chai` and `sinon` definitions all at once, with resolve references, overwrite existing files and save to `tsd.json`:\n\n````bash\n$ tsd install mocha chai sinon -ros\n````\n\nInstall all definitions from `tsd.json`:\n\n````bash\n$ tsd install\n````\n\n\u003e NOTE: `tsd install` will work like `tsd reinstall --save --overwrite`\n\n#### Reinstall definitions\n\nReset the definitions to the commits listed in `tsd.json`:\n\n````bash\n$ tsd reinstall --save --overwrite\n$ tsd reinstall -s -o\n$ tsd reinstall -so\n````\n\n\n#### Update all definitions\n\nUpdate everything in `tsd.json` to head version in the repository:\n\n````bash\n$ tsd update --save --overwrite\n$ tsd update -s -o\n$ tsd update -so\n````\n\n\n#### Link to bundled definitions\n\nTSD supports discovery and linking of definitions from packages installed with `node` or `bower`.\n\nUse the `link` command and your `tsd.d.ts` will be updated with paths to the files in the `node_modules` or `bower_modules` folders.\n\n\n````bash\n$ tsd link\n````\n\nThis feature will scan `package.json` and `bower.json` files for a `typescript` element. This element then contains `definition` or `definitions` sub-element that contain relative path(s) to `.d.ts` files:\n\n\n````json\n{\n\t\"name\": \"cool-module\",\n\t\"version\": \"1.2.3\",\n\t\"typescript\": {\n\t\t\"definition\": \"dist/cool-module.d.ts\"\n\t}\n}\n````\n\nIf the module exports multiple independent files,eg: for some reason not internally `\u003creference\u003e`'d:\n\n````json\n{\n\t\"name\": \"cool-module\",\n\t\"version\": \"1.2.3\",\n\t\"typescript\": {\n\t\t\"definitions\": [\n\t\t\t\"dist/cool-partA.d.ts\",\n\t\t\t\"dist/cool-partB.d.ts\"\n\t\t]\n\t}\n}\n````\n\n\n#### Rebundle definition file\n\nCleanup the bundle file (usually `tsd.d.ts`): remove paths to non-existent files, and append unlisted definitions. Handy when editing definitions.\n\n````bash\n$ tsd rebundle\n````\n\n\n#### Rate-limit\n\nPrint current Github rate-limit info\n\n````bash\n$ tsd rate\n````\n\n\n#### Clear http cache\n\nForcefully remove global http cache files\n\n````bash\n$ tsd purge\n````\n\n\n## Detailed queries\n\nThere are various ways to select files from the repository index.\n\n### Module name\n\nTSD uses a (globbing) path + filename selector to query the [DefinitelyTyped index](https://github.com/DefinitelyTyped/DefinitelyTyped). The results can then be modified using various filters:\n\nNote how the definition filename takes priority:\n\n````bash\n$ tsd query module\n$ tsd query project/module\n````\n\n\nFor example, consider these definitions:\n\n````\nproject/module.d.ts\nproject/module-0.1.2.d.ts\nproject/module-addon.d.ts\n\nproject-plugin/plugin.d.ts\n\nother/module.d.ts\nother/plugin.d.ts\n````\n\nNotice the pattern, and ignore the `.d.ts` extension:\n\n````html\n\u003cproject\u003e/\u003cmodule\u003e\u003csemver\u003e.d.ts\n````\n\nSelect definitions using only the module name:\n\n````bash\n$ tsd query module\n$ tsd query module-addon\n````\n\nOr use a selector derived from the path format:\n\n````bash\n$ tsd query project/module\n$ tsd query other/module\n````\n\nOr simply get everything in a project:\n\n````bash\n$ tsd query project/\n````\n\n### Globbing filter\n\nThe selector also supports globbing, for example:\n\n````bash\n$ tsd query project/*\n$ tsd query project*\n$ tsd query module*\n$ tsd query project/module*\n$ tsd query project-*/plugin*\n$ tsd query *project*/*\n$ tsd query project/plugin*\n$ tsd query other/module\n$ tsd query */module\n$ tsd query */module-*\n$ tsd query */*plugin\n````\n\nHint: if you are using Linux or Mac OS X, use quotes to glob:\n\n````bash\n$ tsd query \"*/jquery.*\"\n````\n\n### Semver filter\n\nNote: the [semver](https://github.com/isaacs/node-semver) postfix of definition files is expected to be separated by a dash and possibly a `'v'`\n\n````\nmodule-0.1.2\nmodule-v0.1.2\nmodule-v0.1.2-alpha\n````\n\nIf there are multiple matches with same module name they will be prioritised:\n\n1.\tThe unversioned name is considered being most recent.\n2.\tThen versions are compared as expected following these [comparison](https://github.com/isaacs/node-semver#comparison) rules.\n3.\tUse the `--version` / `-v` option to set a semver-range:\n\n````bash\n$ tsd query node -v latest\n$ tsd query node -v all\n$ tsd query node -v \"\u003e=0.8 \u003c0.10\"\n$ tsd query node -v \"\u003c0.10\"\n````\n\n### Date filter\n\nUse the `--date` / `-d` option to set a date-range (find dates using `--history` / `-y`):\n\n````bash\n$ tsd query d3 --history\n$ tsd query d3 --date \"\u003e=2012-01-01\"\n\n$ tsd query d3 -y\n$ tsd query d3 -d \"\u003c2012-01-01\"\n````\n\n### Commit filter\n\nUse the `--commit` / `-c` option to supply sha1-hash of a commit (find a commit hash using `--history`), for convenience a shortened sha1 hash is supported.\n\n````bash\n$ tsd query youtube --history\n$ tsd query youtube --commit d6ff\n\n$ tsd query youtube -y\n$ tsd query youtube -c d6ff\n````\n\nNotes:\n\n1. For now this only works with commits that actually changed the definition file you selected (eg, listed in `--history`) This will be expanded to allow selecting from any commit at a later date.\n\n## Special files\n\n### tsd.json\n\nThe `tsd.json` file is automatically created in the root of each project: it configures TSD and it tracks the definitions that are installed (using `--save`).\n\nTo generate a default `tsd.json` run:\n\n````bash\n$ tsd init\n````\n\nAn example configuration the 'node.js' definition installed would look like this:\n\n````json\n{\n\t\"version\": \"v4\",\n\t\"repo\": \"DefinitelyTyped/DefinitelyTyped\",\n\t\"ref\": \"master\",\n\t\"path\": \"typings\",\n\t\"bundle\": \"typings/tsd.d.ts\",\n\t\"installed\": {\n\t\t\"node/node.d.ts\": {\n\t\t\t\"commit\": \"6834f97fb33561a3ad40695084da2b660efaee29\"\n\t\t}\n    }\n}\n````\n\nSupported fields:\n\n\n| field | required | default | description  |\n|---|---|---|---|\n| `version` | yes | `v4` | Tracks config version for future changes (don't change this).\n| `repo` | yes | `DefinitelyTyped/DefinitelyTyped` |  Github user and repo name of the typings repository. Change this if you want to use TSD from a DefinitelyTyped fork.\n| `ref` | yes | `master` | Branch name or other git reference of the repository. Change this to use legacy branches.\n| `path` | yes | `typings` | Path to the typings directory, the definitions will be installed in the appropriate sub-folders. Change this to have typings in your main code directory, but this is not recommended as the mixed styles used in the definitions it will confuse your inspections and lint-tools.\n| `bundle` | no | `typings/tsd.d.ts` | Path to a `.d.ts` bundle file (see below). Change this if you want the bundle to be closer to the actual source files. TSD will create the appropriate relative paths.\n| `stats` | no | (not set) | Set to `false` to disable the stats tracking. Keep in mind the stats are anonymous, help us improve TSD \u0026 DT and motivate us to spend our time on development. See below for the 'Privacy statement'.\n\n--\n\n### tsd.d.ts\n\nThe `tsd.d.ts` file refers every definition that is installed with `--save` for convenient and explicit single reference from code.\n\n````\n/// \u003creference path=\"../typings/tsd.d.ts\" /\u003e\n````\n\nBy default it is created in the typings folder but the name and location are configurable in `tsd.json`. When adding new references TSD will check the existing references and respects re-ordering (ordering is important for inter-dependent definitions).\n\n\n--\n\n### .tsdrc\n\nThis is a optional JSON encoded file to define global settings. TSD looks for it in the  user's home director (eg: `%USERPROFILE%` on Windows, `$HOME` / `~` on Linux), and in the current working directory.\n\n- \"**proxy**\" - Use a http `proxy`\n\nAny standard http-proxy as supported by the [request](https://github.com/mikeal/request) package.\n\n````json\n{\n\t\"proxy\": \"http://proxy.example.com:88\"\n}\n````\n\n- \"**strictSSL**\" - Toggle strictSSL verification:\n\nEnabled by default, setting this option to `false` disables strict SSL. Passed to [request](https://github.com/mikeal/request) package.\n\nUseful behind (corporate) proxies that act like man-in-the middle on https connections.\n\n````json\n{\n\t\"strictSSL\": false\n}\n````\n\n- \"**token**\" - Github OAuth token:\n\nThe OAuth token can be used to boost the Github API rate-limit from 60 to 5000 (non-cached) requests per hour. This token just needs ['read-only access to public information'](http://developer.github.com/v3/oauth/#scopes) so no additional OAuth scopes are necessary.\n\n````json\n{\n\t\"token\": \"0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33\"\n}\n````\n\nYou can also set the token using the `TSD_GITHUB_TOKEN` environment variable.\n\nYou can create this token on Github.com:\n\n1. Go to https://github.com/settings/tokens/new\n3. *Deselect* all scopes to create a token with just basic authentication.\n\t1. (verify you *really* deselected all scopes)\n\t5. (wonder why these presets were set??)\n2. Enter a identifying name, something like \"`TSD Turbo 5000`\"\n5. Create the token.\n6. Copy the hex-string to the `token` element in the `.tsdrc` file.\n6. Verify enhanced rate-limit using `$ tsd rate`\n\nChange or revoke the token at any time on https://github.com/settings/applications\n\nNote: keep in mind the `.tsdrc` file is *not* secured. Don't use a token with additional scope unless you know what you are doing.\n\nThe bare 'no scope' token is *relatively* harmless as it gives 'read-only access to public information', same as any non-authenticated access. But it does *identify* any requests done with it as being *yours*, so it is still *your* responsibility to keep the token private.\n\n## Usage as module\n\nTSD can be used as a JavaScript npm dependency:\n\n````js\nvar tsd = require('tsd');\nvar api = new tsd.API(new tsd.Context('path/to/tsd-config.json'));\napi.search(new tsd.Selector('jquery/*')).then(function(res) {\n\t// yes\n\tutil.inspect(res);\n\n}, function(err) {\n\t// no\n});\n````\n\nFor a practical example see [grunt-tsd](https://github.com/DefinitelyTyped/grunt-tsd).\n\nTSD uses Promise/A+ by [bluebird](https://github.com/petkaantonov/bluebird). :point_left::+1:\n\nAPI export is somewhat experimental; take care to lock versions and test on upgrade. If you plan to use TSD as module in a tool or project then feel free to [leave a message](https://github.com/DefinitelyTyped/tsd/issues) and coordinate stuff.\n\n### API docs\n\nNot yet.\n\n## Notes\n\n*\tIt is recommended you check-in the definitions you install into your VCS.\n*\tDon't forget to move your fixes back to [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped)\n\n#### Github rate-limit\n\nThe Github API has a 60-requests-per-hour [rate-limit](http://developer.github.com/v3/#rate-limiting) for non-authenticated use. You'll likely never hit this as TSD uses local caching and the definition files are downloaded from Github RAW urls. If you need some more then a scope-limited Github OAuth token can be used to boost the limit to 5000.\n\n#### Usage stats \u0026 update-notifier\n\nThe CLI tool [tracks](https://github.com/DefinitelyTyped/tsd/blob/master/src/tsd/cli/tracker.ts) some *anonymous* usage statistics about what definitions are installed though TSD in Google Analytics (using [universal-analytics](https://npmjs.org/package/universal-analytics)). There is also a [update-notifier](https://npmjs.org/package/update-notifier) service to check for TSD updates.\n\n\n## FAQ \u0026 Info\n\n### Is there a build task available?\n\nOf course! The official plugin is [grunt-tsd](https://github.com/DefinitelyTyped/grunt-tsd), and the community created [gulp-tsd](https://github.com/moznion/gulp-tsd).\n\n### I hit the Github rate-limit, now what?\n\nIf TSD is used in a way that needs many unique API calls in a short period (like using `--history` on big selections), or shares an internet-connection with multiple users (like in an office) then the rate limit blocks the API. It blocks for 60 minutes after the *first* request of the total 60.\n\nFor these cases TSD has an option to use a Github OAuth token and raise your local rate-limit from 60 to 5000 per hour. See the `.tsdrc`-section elsewhere in the readme.\n\n### Does TSD work behind a (corporate) http proxy?\n\nAs of `v0.5.7` there are two ways to configure the location of the proxy server:\n\n1. Use a environment variable. TSD support the conventional fields: pick one of `HTTPS_PROXY`, `https_proxy`, `HTTP_PROXY` or `http_proxy`.\n1. Use a global `.tsdrc` file and set a `proxy` value (see the tsdrc-section elsewhere in the readme).\n\n### What if my proxy terminates SSL?\n\nAs of `v0.6.0` strict SSL verification can be disabled in `.tsdrc` via `strictSSL` variable (see tsdrc-section).\n\n### Can TSD auto-install definitions for a specific package version?\n\nYes, and no (and later yes again)\n\nThere is basic support for parsing semver-postfixes from the definition file names, and you can filter on this using [semver](https://github.com/isaacs/node-semver) ranges with the `--version` option: Try it with the 'node' definitions.\n\nIt works well but is not used much in the current DefinitelyTyped repository. The DefinitelyTyped [group](https://github.com/DefinitelyTyped/tsd/issues) is working on a meta-data source that will solve this (the [Nuget exporter](https://github.com/DefinitelyTyped/NugetAutomation) is waiting for this too).\n\n### What is the location of the cache folders?\n\nThe cache is stored in the users home directory (like `$ npm`). Use `$ tsd settings` to view the current paths. Use the `--cacheDir` to override the cache directory, or `--cacheMode` to modify caching behaviour.\n\n### I have a suggestion or contribution\n\nFeel free to leave a [ticket](https://github.com/DefinitelyTyped/tsd/issues). Questions and contributions for the definition files go [here](https://github.com/DefinitelyTyped/DefinitelyTyped/issues).\n\n## History\n\n### v0.6.x ( \u003e 2014-10)\n\n* Long delayed release of major overhaul: migrated code to external module style and reworked many features, subsystems and dependencies. Development in [dev/next](https://github.com/DefinitelyTyped/tsd/tree/dev/next) branch.\n\n* Interesting changes\n\t* added `install` command to CLI\n\t* improved module-name pattern matching\n\t* refreshed CLI interface, formatting, help\n\t* reworked http download/cache\n\t* switched many modules, added `definition-header`\n\t* replaced ugly node-gyp sub-dependency\n\n### v0.5.x ( \u003e 2013-08)\n\n* Current release versions. See the [release tags](https://github.com/DefinitelyTyped/tsd/releases) fore more details.\n\n* Full rewrite by @[Bartvds](https://github.com/Bartvds): drops the separated TSD data registry in favour of using the [Github API](http://developer.github.com/) to pull definitions directly from [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped).\n\n### v0.3.x\n\n* Original version by @[Diullei](https://github.com/Diullei).\n\nTo install `v0.3.x` (old readme [here](https://github.com/DefinitelyTyped/tsd/blob/legacy/README.md)):\n\n````bash\n$ npm install tsd@0.3.0 -g\n````\n\n## Build\n\nTSD is compiled with [TypeScript](http://www.typescriptlang.org/) `v1.1.0-1` and managed using [Grunt](http://www.gruntjs.com).\n\nTo rebuild clone the repos:\n\nInstall dependencies:\n\n````bash\n$ npm install\n````\n\nBuild, lint and test:\n\n````bash\n$ grunt test\n````\n\nOnly rebuild:\n\n````bash\n$ grunt build\n````\n\nRun in dev folder:\n\n````bash\n$ node ./build/cli.js query d3 --dev\n````\n\nInstall dev folder to global cli:\n\n````bash\n$ npm install . -g\n````\n\nTSD uses [gruntfile-gtx](https://github.com/Bartvds/gruntfile-gtx) to test separate test suites sets during development:\n\nList aliases:\n\n````bash\n$ grunt -h\n````\n\nExample: run only api tests:\n\n````bash\n$ grunt gtx:api\n$ grunt gtx:cli\n$ grunt gtx:tsd\n````\n\nIt is recommend you use an intelligent parsing IDE (WebStorm or VisualStudio) and a big screen (or two) on a properly powerful workstation.\n\nCode looks best with tabs rendered at 4 spaces (3 is nice too, or 6 or 8.. I don't really care, because [smart-tabs](http://www.emacswiki.org/SmartTabs) are awesome like that). The gruntfile uses slightly harsh [JSHint](https://github.com/jshint/jshint) and [TSLint](https://github.com/palantir/tslint) settings to enforce code style, but there is an [`.editorconfig`](http://editorconfig.org/) to elevate some of the pain.\n\nMaster branch is the release version, new development happens currently in [dev/next](https://github.com/DefinitelyTyped/tsd/tree/dev/next) branch: probably broken and regularly rebased for near future.\n\n\n## Contribute\n\nContributions are very welcome; please discuss larger changes in a [ticket](https://github.com/DefinitelyTyped/tsd/issues) first. Fixes and simple enhancements are always much appreciated. Please make sure you work in the right branch.\n\n**Note:** Contributions on the definition files go directly to [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped).\n\n\n## Privacy\n\nThe TSD CLI tool collects definition usage information, like the queries made to the repo and the definitions that get installed. The information collected amounts to about same level of detail as services like npm or github would collect (maybe even less as we don't track a user id).\n\nThe API does not track anything.\n\nTo store this TSD uses [Google Analytics](http://www.google.com/analytics/) in the excellent [universal-analytics](https://npmjs.org/package/universal-analytics) package. We might at some point publish some anonymised aggregate stats to the DefinitelyTyped website.\n\nChanges to the policy should be announced in release notes, and ideally ask confirmation on the first CLI use.\n\nKeep in mind we're just devs like you and are working on this in our spare time; we run this project out of love and duty and most of all for fun as learning experience. The stats give us helpful insights into the usage of TSD, and of course the growing numbers and graphs motivate us to spend our time on further development.\n\n\n## Security\n\nPlease close read the relevant sections of the readme, especially on OAuth 'scope'.\n\nThe optional [Github OAuth token](http://developer.github.com/v3/oauth/) is only used to authenticate with the Github API. The token is not stored anywhere but the local machine. It is your responsibility to keep your token safe.\n\nUsing an OAuth token with additional scope is *neither advised nor supported*, even though it could make TSD work with private repositories. But it might also leak repo or content names to analytics or leave a bare http cache in your temp dir. If this bothers you please review the license and/or leave a message.\n\n\n## License\n\nCopyright (c) 2014 by [Bart van der Schoor](https://github.com/Bartvds) @ [DefinitelyTyped](https://github.com/DefinitelyTyped)\n\nLicensed under the [Apache License, Version 2.0](https://raw.github.com/DefinitelyTyped/tsd/master/LICENSE.txt).\n\n* note: there is some imported MIT licensed code by myself, [Bart van der Schoor](https://github.com/Bartvds)\n\nCopyright (c) 2012 by [Diullei Gomes](https://github.com/Diullei).\n\nLicensed under the MIT License.\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/DefinitelyTyped/tsd/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDefinitelyTyped%2Ftsd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDefinitelyTyped%2Ftsd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDefinitelyTyped%2Ftsd/lists"}